Socket.IO - io未定义(在不同域上失败)

时间:2013-12-09 11:43:42

标签: node.js nginx socket.io

我知道这个错误信息已被提出很多问题,但我找不到符合我情况的信息。下面我将向您展示服务器(node.js)和客户端代码。 socket.io.js文件包含在内并且肯定存在。

1 个答案:

答案 0 :(得分:1)

如果您没有收听正确的端口,则会出现此问题。

服务器

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

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

<强>客户端

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:80');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

如果服务器和客户端没有侦听同一个端口,那么您将无法加载socket.io库,并且未定义io。我猜你在连接到不同的域时没有在客户端上指定端口。如果您使用express,则端口号应该是Express默认侦听的端口。