【发布时间】:2014-10-12 01:18:33
【问题描述】:
我无法连接到 socket.io。使用下面的代码,我的浏览器控制台上不断出现“io is not defined”错误。有人知道我在这里做错了什么吗?我已经在 stackoverflow 上闲逛了好几个小时,但似乎没有任何解决方案有效......
服务器端:
,db = require("../../lib/db")
,config = require("../../config")
,app = require("../index")
,io = require('socket.io')(app);
;
io.on('connection', function (socket) {
console.log('connected')
});
exports.render = function(req, res){
console.log(io)
res.render("vitron", {});
}
客户端:
<!doctype html>
<html>
<head>
<title>Sockets</title>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</head>
<body>
</body>
</html>
【问题讨论】:
-
检查浏览器错误日志,看看是否有错误加载
/socket.io/socket.io.js。如果有,那么问题是您的socket.io初始化服务器端缺少一个中间件调用,该调用将在请求时将 socket.io.js 文件提供给客户端。除非您进行正确的中间件初始化,否则它不会自动提供。 socket.io 文档中有很多关于如何初始化事物的示例。 -
感谢您的帮助!我确实有以下错误: GET localhost:4602/socket.io/socket.io.js 对不起我的无知,但你指的是哪种中间件调用?
-
这表明您没有正确的服务器端初始化,因此您的应用服务器会自动提供
/socket.io/socket.io.js文件。 -
你是说 io = require('socket.io')(app) 中的 'app' 可能不是它应该的样子?