36

我正在尝试让 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 文件正常工作。

我错过了什么?

4

5 回答 5

45

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

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

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

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

于 2013-07-20T02:41:45.107 回答
4

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

于 2013-07-20T02:22:42.620 回答
3

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

来源:Socket 入门页面

于 2017-08-13T11:22:06.943 回答
2

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

  • 由 socket.io 服务器提供/socket.io/socket.io.js
  • 通过 webpack 作为模块包含socket.io-client
  • 通过官方CDNhttps://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);
于 2019-05-10T10:13:18.927 回答
1

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

于 2016-05-29T13:04:41.050 回答