Socket.IO 客户端 .js 文件在哪里?

IT技术 javascript node.js socket.io
2021-01-29 03:10:32

我正在尝试让 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.jsfile。但是,这是服务器端的(使用短语require(), which errors on the client)。

我花了一个小时环顾四周,但无法让任何客户端 .js 文件工作。

我错过了什么?

5个回答

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

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

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

因此,无论您的 Web 应用程序结构如何,您都只需指向此 url,它就可以工作。

@jleach 尝试其中之一
2021-03-20 03:10:32
这仅在运行 socket-io 服务器端的进程与处理路由/提供 HTML/JS 的进程相同时才有效。-- 否则您必须指定 URL:port,例如http://localhost:3466/socket.io/socket.io.js. 即 (obv) 如果您有一个 Web 应用程序尝试引用不同的进程,则需要指定整个 URL
2021-03-22 03:10:32
它是由节点服务器动态生成的文件,是的。我还发现奇怪的是,他们对此一言不发,就好像他们希望每个人都盲目地复制他们的例子,而不去质疑那里发生了什么。
2021-03-28 03:10:32
然后当它不起作用时我们该怎么办?我在这里,在 S/O 中搜索答案......(但仍然没有找到)。我讨厌魔法。
2021-04-09 03:10:32

我建议检查您的 node_modules 目录是否位于应用程序目录的顶层。另外,我相信您需要指定一个端口号;你应该写一些类似的东西var socket = io.connect('http://localhost:1337');,端口号在哪里1337

值得一提的是,如果您打算使用具有相同协议并在相同主机和端口上使用您的套接字,您可以放弃对 'code'connect'code' 和 URL 的调用 var socket = io(); 这将创建您的句柄将来使用并尝试连接。
2021-03-22 03:10:32

如果你这样做了,npm install那么客户端 socket.io 文件位于 node_modules/socket.io-client/dist/socket.io.js

来源:Socket 入门页面

这就是为什么 stackoverflow 是不公平的。他们阻止我提问。这是一个有用的答案,它是-1。我给了你一票,所以现在是 0。
2021-04-05 03:10:32

客户端可通过以下几种方式使用:

  • 由 socket.io 服务器提供 /socket.io/socket.io.js
  • 通过 webpack 作为module包含 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);

在这里您可以找到各种版本的 CDN。