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件一起工作。
-
服务一些HTML(/index.html将做得很好),所以有一个网页。 这个文件应该包含socket.io客户端的
<script>
标签。 为此,您需要启动器示例的http服务器部分。 你错过了这个,这就是为什么浏览到你的服务器只是挂起。 -
服务于socket.io客户端。 当你将http服务器function传递给它的时候,Socket.io会自动为你做这件事。 你不需要完整的expression式,因为这可以根据socket.io文档中的第一个例子,仅使用node的
http
模块来完成。 -
一些JavaScript实际上做了一些与套接字。 这可以是
index.html
中的<script>
标记的内容或单独的文件。 如果它是一个单独的文件,你需要设置你的http服务器来实际提供服务。