socket.io.js没有加载

时间:2013-03-01 15:17:04

标签: javascript node.js socket.io

我知道这方面已经有很多问题,但没有人对我说过,而且我的情况略有不同。

我正在节点中启动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,因此它们应该是最新版本。任何人都可以对此有所了解吗?谢谢!

4 个答案:

答案 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件一起工作。

  1. 提供一些HTML(/index.html会很好),所以有一个网页。此文件应包含socket.io客户端<script>标记。为此,您需要启动器示例的http服务器部分。你错过了这个,这就是浏览你的服务器的原因。

  2. 为socket.io客户端提供服务。当您将http服务器功能传递给它时,Socket.io会自动为您执行此操作。您不需要完整表达,因为根据socket.io文档中的第一个示例,只需使用节点的http模块即可。

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