-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 に答える