Node + Socket.io连接问题

时间:2014-10-12 01:18:34

标签: node.js sockets socket.io

我在连接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>

1 个答案:

答案 0 :(得分:0)

您显然没有正确的服务器端初始化,因此您的服务器将自动提供/socket.io/socket.io.js文件。

有很多方法可以做到这一点,但是socket.io文档中记录的最简单的方法是使用一些内置的中间件,这些中间件将使socket.io服务器端库自动拦截{的请求{1}}文件并提供脚本文件。

socket.io文档在使用带节点的express时准确显示了如何执行此操作。如果您没有使用express,那么您可以使用自己的中间件来完成。或者,如果您只是使用普通节点,则必须自己处理该路由,或者只将/socket.io/socket.io.js文件放在可以直接请求的已知位置。如果需要,您甚至可以在CDN上链接它,但使用内置方案有一个优势,因为当/如果您升级服务器上的socket.io库,它将自动包含匹配的客户端库这很好。

我不确切知道您的整体设置是什么,但这是我的socket.io初始化快递4。

/socket.io/socket.io.js