1

シンプルな node.js/socket.io/express/redis サーバーを作成しました。サーバーを強制終了して再起動するときに、クライアントを再初期化しようとしています。

私のクライアント側のコードは次のようになります。

var socket = io.connect('http://' + location.hostname); 
socket.on('connect', function (data) {socket.emit('join room', 'lobby' );});

私のサーバー側のコードは次のようになります。

var SessionSockets = require('session.socket.io')
  , sessionSockets = new SessionSockets(io, sessionStore, cookieParser);

sessionSockets.on('connection', function (err, socket, session) {
    clientConnect(err, socket, session)
});

function clientConnect(err, socket, session){
  socket.on('join room', function (room) {
    if (room == 'lobby')
      lobby.connect(err,socket,session);
  });
}

編集: 何らかの理由で、サーバーを強制終了 ( ctrl+ c) して再起動すると、接続ハンドシェイクがログに記録され、サーバーは常に「接続」を発行しますが、クライアントがスーツに従い、受信時に「ルームに参加」を発行すると、サーバーに接続しても受信されません(ルームに参加するときにconsole.logを実行しています。)

ただし、「ルームに参加」を発行する前にクライアント側のアラートを設定すると (基本的に遅延が強制されます)、コードは常に機能します。クライアントが「ルームに参加」イベントを送信したときに、サーバーが完全に初期化されていない可能性はありますか?

4

1 に答える 1