2

私は、Node.js と Socket.IO を独学するために、オンラインのターンベースのゲームに取り組んでいます。ゲームのいくつかの側面はサーバー側で解決されます。これらの機能の 1 つの実行中に、サーバーがクライアントからの入力を要求する場合があります。クライアントが応答するのを待つために、サーバーの機能の解決を「一時停止」する方法はありますvar x = window.promptか?

私が取り組んでいるコードのアイデアは次のとおりです。

サーバ:

for (some loop){
  if (some condition){
   request input via io.sockets.socket(userSocket[i]).emit('requestInput', data)  
  }
}

クライアント:

socket.on('requestInput', function (data) {
  var input = window.prompt('What is your input regarding ' + data + '?');
  //send input back to the server
  socket.emit('refresh', input)  
});

何かご意見は?

4

2 に答える 2

1

それは不可能だと思います。

for (some loop){
    if (some condition){
    request input via io.sockets.socket(userSocket[i]).emit('requestInput', data) 
    /* Even if you were able to pause the execution here, there is no way to resume   it when client emits the 'refresh' event with user input */
}

}

代わりにできることは、一時停止せずにすべての 'requestInput' イベントを発行し、socket.on('refresh',function(){}) イベントで取得するすべての応答を配列に保存することです。その後、この配列を後で処理できます。あなたの正確な要件が何であるかはわかりませんが、それがうまくいくかどうか教えてください。

于 2013-10-05T05:11:17.060 に答える