socket.io.js不加载

我知道这个问题已经有很多问题了,但是没有人回答这个问题,而且我的答案略有不同。

我正在使用这个节点启动socket.io服务器:

var io = require('socket.io').listen(8000); 

我的terminal说一切正常:

 info - socket.io started 

现在我正尝试使用这个URL在客户端浏览器中加载.js文件:

 http://<hostname>:8000/socket.io/socket.io.js 

我没有得到404,它只是永远挂起。 我也使用networking实用程序来ping端口8000,似乎打开罚款。

我昨天安装了node和socket.io,所以应该是最新的版本。 任何人都可以解释这一点吗? 谢谢!

使用express.js。 将socket.io文件放在public/javascripts文件夹中,并将此行添加到您的html

 <script src="/javascripts/socket.io.js"></script> 

我认为这是最好的方法。 当你写http://<hostname>:8000/socket.io/socket.io.js
节点尝试在项目的公用文件夹中find名为socket.io的文件夹。 并在其中的文件socket.io.js

如果你不想使用express.js,你应该捕获这个请求,如果你的请求没有find路由(实际上是expression的),那么你应该加载一个文件,因为节点不知道该怎么办, t匹配您的服务器中的任何路线。

我build议使用socket.io.min.js文件(它更小,它在文件夹node_modules\socket.io\node_modules\socket.io-client\dist

原因是我永远不会请求.js文件是因为我的公司networking阻止除了通常的(80,21等)的所有端口,所以`我永远不能与端口8000沟通。

你必须启动一个http / https服务器来通过http / https访问它。 简单地启动一个socket.io服务器不会。 请执行下列操作:

 var http = require('http'); var app = http.createServer(), io = require('socket.io').listen(app); app.listen(7000, "0.0.0.0"); 

然后我可以访问文件http://localhost:7000/socket.io/socket.io.js

sockets.io使用websocket协议(ws://)。 请参阅维基百科页面 。

你需要至less有3件一起工作。

  1. 服务一些HTML(/index.html将做得很好),所以有一个网页。 这个文件应该包含socket.io客户端的<script>标签。 为此,您需要启动器示例的http服务器部分。 你错过了这个,这就是为什么浏览到你的服务器只是挂起。

  2. 服务于socket.io客户端。 当你将http服务器function传递给它的时候,Socket.io会自动为你做这件事。 你不需要完整的expression式,因为这可以根据socket.io文档中的第一个例子,仅使用node的http模块来完成。

  3. 一些JavaScript实际上做了一些与套接字。 这可以是index.html中的<script>标记的内容或单独的文件。 如果它是一个单独的文件,你需要设置你的http服务器来实际提供服务。