找不到 socket.io.js

IT技术 javascript node.js express socket.io
2021-01-23 23:56:33

由于某种原因,我的节点服务器无法为路由提供服务/socket.io/socket.io.js,我总是收到 404 错误。
我尝试编译不同的节点版本(当前是 0.6.13,它也在服务器上运行,它实际工作的地方)。
从 app.js 中,我info: socket.io started在尝试调用 socket.io.js 时得到并且没有错误。

我从本地主机和端口 8000 尝试它,并使用 express 框架

这是来自 app.js 的代码:

var express = require('express')
  , app = require('express').createServer()
  , io = require('socket.io').listen(app, { log: true });

app.listen(8000);

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

io.sockets.on('connection', function (socket) {
   // all other stuff here
5个回答

请检查您的 Express 版本。Express 最近更新到 3.0alpha,其中 API 已更改。如果 3.0,您可以将代码更改为如下所示:

var express = require('express')
  , http = require('http');

var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

...

server.listen(8000);

与连接相同的问题:https : //github.com/senchalabs/connect/issues/500#issuecomment-4620773

如果您正在使用示例代码段,请不要忘记更改app.listen()为以供将来参考server.listen()
2021-03-20 23:56:33
确定这听起来很接近,我用你的代码取代它,现在当我尝试启动服务器,我得到这个错误:Cannot call method 'on' of undefined这对应于以下代码段:io.sockets.on('connection', function (socket) {. 这简直太奇怪了。我感觉很失落。
2021-03-21 23:56:33
这对我来说是非常有用的。非常感谢!
2021-03-23 23:56:33
顺便说一句,我忘了补充说我实际上已经安装了 express 3.0alpha
2021-03-29 23:56:33
太好了,就是这样!非常感谢你!:)
2021-04-13 23:56:33

与 Express 3 Web 框架一起使用:(来自 socket.io

> Express 3 要求您先实例化 ahttp.Server以将 socket.io 附加到:

含义 - (1) 您必须创建一个服务器实例:

var app = express();
var http = require('http').createServer(app);

(2) 将其与 socket.io 耦合:

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

并且只有那么 - (3) 让服务器监听:

http.listen(8080);

确保你保持这个顺序!

安装节点 0.8.1 后,我遇到了同样的问题。我刚刚删除了项目文件夹中的 node_modules 映射并重新安装了 express/socket.io。之后,您的问题中的代码再次正常工作。

也许这可以帮助你,在我的 Ubuntu 11.10 上我没有正确设置NODE_PATH变量,如果你在 linux/mac 上尝试将下面的行添加到你的 .bashrc/.zshrc 文件中。

export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
我添加node_modules到我的 NODE_PATH 但它仍然不起作用。太糟糕了,它确实提高了我的希望。但奇怪的是,当通过 npm 安装某些东西时,它说:Checking for node path: not found. 但是当回显 $NODE_PATH 我得到/usr/local/lib/node:/usr/local/lib/node_modules. 在这一点上我真的很困惑。
2021-03-29 23:56:33

在您的存储库中安装 Socket.io:

npm install socket.io --save 

之后,配置服务器:

   var express = require('express')
   var app     = express();
   var server  = require('http').createServer(app);
   var io      = require('socket.io').listen(server);

   server.listen(app.get('80')); // not 'app.listen'

在您的存档HTML/EJS或其他您想要的存档中,添加:

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

检查是否适用于Console(Chrome/Mozilla 等)。

在我的示例中,我使用 Chrome (Ctrl + shift + I):

在此处输入图片说明