-1

在客户端:

<a href='javascript:callInit();'> Get Init </a>

客户端 html 包括上面的以下脚本:

<script src="/socket.io/socket.io.js"></script>
<script>var socket = io.connect('http://localhost:3000');
 function callInit(){
  alert('inside callInit');
  socket.emit('init', 'data');
}
</script>

在服务器端:

 io.sockets.on('connection', function(socket) {
console.log('socket connection established');
    socket.on('init', function(data){
    console.log('init invoked');
    init();
    });
 });

在上面的代码中:alert('inside callInit')执行。console.log('socket connection established');执行。但是console.log('init invoked);` 不执行。

4

1 回答 1

1

那是因为io.connection(...)异步callInit的,并且在调用函数时套接字可能没有连接。

您可能想要添加一个on('connect', ....)到浏览器端套接字连接和一个on('error', ...)来检查连接和错误

于 2013-08-23T14:53:57.427 回答