Socket.IO客户端.js文件位于何处

Where is the Socket.IO client-side .js file located?

本文关键字:于何处 文件 js IO 客户端 Socket      更新时间:2023-09-26

我正在尝试让socket.io(节点库)工作。

我让服务器端的js工作,它正在监听。socket.io网站简单地说:

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

这很好,然而,我正在导入什么JS文件!?!

我进入node_modules目录,在那里我通过npm安装了socket.io,socket.io/lib/中是socket.io.js文件。但是,这是服务器端的(使用短语require(),这在客户端上是错误的)。

我花了一个小时四处寻找,但我找不到任何客户端.js文件。

我错过了什么?

我最终自己回答了这个问题。

socket.io入门页面对此并不清楚,但我发现socket.io的服务器端会自动将.js文件托管在启动节点上的文档中指定的目录中:

"/socket.io/socket.io.js"

因此,无论你的网络应用程序结构如何,你只需指向这个url,它就可以工作了。

我建议检查node_modules目录是否位于应用程序目录的顶层。此外,我认为您需要指定一个端口号;您应该编写类似var socket = io.connect('http://localhost:1337');的内容,其中端口号为1337

如果执行npm install,则客户端socket.io文件位于node_modules/ssocket.io-client/dist/socket.io.js

来源:Socket入门页面

客户端有几种可用方式:

  • 由位于/socket.io/socket.io.js的socket.io服务器提供
  • 通过webpack作为模块socket.io-client包含
  • 通过官方CDN https://cdnjs.cloudflare.com/ajax/libs/socket.io/<version>/socket.io.js

对于第一种,服务器可以通过以下几种方式进行配置:

// standalone
var io = require('socket.io')(port);
// with existing server from e.g. http.createServer or app.listen
var io = require('socket.io')(server);