由于某些原因,我的节点服务器无法提供路由/socket.io/socket.io.js
,我总是收到404错误
我尝试编译不同的节点版本(当前是0.6.13,它也在服务器上运行,它实际上工作)。
从app.js我得到info: socket.io started
并且在尝试调用socket.io.js时没有错误。
我从localhost和端口8000尝试它,我使用快速框架
这是来自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
答案 0 :(得分:95)
请检查您的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);
与connect:https://github.com/senchalabs/connect/issues/500#issuecomment-4620773
相同的问题答案 1 :(得分:3)
使用Express 3网络框架 :( from socket.io)
> Express 3要求您实例化http.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);
确保您保留此订单!
答案 2 :(得分:1)
安装节点0.8.1后我遇到了同样的问题。 我刚删除了项目文件夹中的node_modules映射并重新安装了express / socket.io。 之后,它再次使用你问题中的代码再次正常工作。
答案 3 :(得分:0)
也许这可以帮到你,在我的Ubuntu 11.10上我没有正确设置NODE_PATH
变量,
如果您使用的是linux / mac,请尝试在下面添加.bashrc / .zshrc文件。
export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
答案 4 :(得分:0)
在您的存储库中安装Socket.io:
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
检查是否适用于strcpy(dummyItem->data, NULL);
(Chrome / Mozilla等)。
在我的示例中,我使用Chrome(Ctrl + shift + I):