我知道这方面已经有很多问题,但没有人对我说过,而且我的情况略有不同。
我正在节点中启动socket.io服务器:
var io = require('socket.io').listen(8000);
我的终端说一切正常:
info - socket.io started
现在我正在尝试使用此url:
在我的客户端浏览器中加载.js文件http://<hostname>:8000/socket.io/socket.io.js
我没有得到404,它只是永远挂起。我还使用了一个网络实用程序ping端口8000,它看起来很开放。
我昨天安装了node和socket.io,因此它们应该是最新版本。任何人都可以对此有所了解吗?谢谢!
答案 0 :(得分:1)
使用express.js。将socket.io
文件放在public/javascripts
文件夹中,并将此行添加到您的html
<script src="/javascripts/socket.io.js"></script>
我认为这是最好的方法。当你写http://<hostname>:8000/socket.io/socket.io.js
时
node尝试在项目的公用文件夹中查找名为socket.io
的文件夹。并且文件socket.io.js
在其中。
如果您不想使用express.js,您应该捕获请求并尝试加载文件,如果没有找到您的请求的路由(实际表达的是什么),因为节点不知道如何处理请求它与您服务器中的任何路由都不匹配。
我建议使用socket.io.min.js
文件(它更小,位于node_modules\socket.io\node_modules\socket.io-client\dist
文件夹中)
答案 1 :(得分:1)
原因我永远不会请求.js文件是因为我的公司网络阻止除了通常的端口之外的所有端口(80,21等),所以`我永远无法与端口8000通信。
答案 2 :(得分:0)
您必须启动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://)。请参阅wikipedia page。
答案 3 :(得分:0)
你需要至少3件一起工作。
提供一些HTML(/index.html会很好),所以有一个网页。此文件应包含socket.io客户端<script>
标记。为此,您需要启动器示例的http服务器部分。你错过了这个,这就是浏览你的服务器的原因。
为socket.io客户端提供服务。当您将http服务器功能传递给它时,Socket.io会自动为您执行此操作。您不需要完整表达,因为根据socket.io文档中的第一个示例,只需使用节点的http
模块即可。
一些javascript实际上对套接字做了些什么。这可以是<script>
中index.html
标记的内容或单独的文件。如果它是一个单独的文件,您需要设置您的http服务器以实际提供它。