2

我想要一个连接(是客户端)到 socket.io/node.js 后端的网页,但网页不应该通过/使用 node.js 提供/启动,而应该是一个单独的项目,没有任何 node.js 使用。

我怎样才能做到这一点?

4

2 回答 2

2

Socket.io带有两个独立的库,一个用于客户端使用,一个用于创建服务器。
客户端库既可以在 Web 浏览器中使用,也可以在 Node.js 应用程序中使用。
服务器库需要 Node.js。

所以用 Node.js 实现你的 Socket.IO 服务器然后用客户端库连接到它是很重要的。

为了在网页中使用 Socket.IO 客户端库,您只需使用script标签将其包含在页面中,然后连接到您的服务器:

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:8080');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

可以使用您想要的任何技术提供您的 HTML 页面;例如,您可以使用 Django 框架和 Python 作为其后端来生成 HTML 页面。或者简单地运行一个 Web 服务器(例如 Nginx),或者甚至在您选择的浏览器中将 HTML 页面作为文件打开。

于 2018-07-15T08:17:25.410 回答
1

没有明确要求在服务器端使用节点。例如,Flask 使用 python 作为服务器端库: https ://flask-socketio.readthedocs.io/en/latest/

socket.io 还有一个 C 服务器库,我相信还有许多其他语言可以使用它。这里的问题是所有节点文档都使用“/socket.io/socket.io.js”脚本 URL,这意味着 node.js以某种方式提供文件,但我们希望在不使用 Node 的情况下提供该文件。

在烧瓶示例中,看起来他们使用以下脚本标签提供服务:

<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>

根据您的服务器端使用的内容,它们也可能有自己的客户端实现。我个人建议阅读 socket.io 实现的文档,看看它们是否指定了客户端库。

于 2019-12-14T00:58:53.370 回答