0

私は node.js と socket.io で何かを構築しています。これにより、ユーザーはテキストエリアに書き込むことができます (tchat によく似ています) が、交互に書き込む必要があります。何かのようなもの:

  • ユーザー 1 が書き込み中です。ユーザー 2 とユーザー 3は書き込みできません。
  • ユーザー 1 がメッセージを送信します。
  • ユーザー 1は書き込みできません。ユーザー 2 は書き込みを許可されています。ユーザー 3は書き込みできません。
  • ユーザー 2 がメッセージを送信します。
  • ユーザー 1 とユーザー 2は書き込みできません。ユーザー 3 は書き込みを許可されています。
  • ユーザー 3 がメッセージを送信します。
  • ユーザー 1 が書き込み中です。ユーザー 2 とユーザー 3は書き込みできません。
  • ...など

今のところ、私は(クライアント側で)持っています:

    var ucan;
    $('#txtform').submit(function(event){
       if(ucan){
         socket.emit('trigger', me);
         ucan = false;
       }
       $('#txtArea').attr('readonly','true');
       }
    })

サーバー側で:

    socket.on('trigger', function(user){
      u = user.id + 1; // switch to next user since users[] (further)
                       // stores all the users with their ids
      if(u >= users.length){
        u = 0; // loop throug all users
      }
      io.sockets.socket( users[u] ).emit('turn');
    })

これにより、私は再びクライアント側になります:

    socket.on('turn', function(){
      ucan = true;
      $('#txtArea').removeAttr('readonly');
    })

問題は、アプリに接続すると、新しいユーザーが書き込み権限を持っているため、最初のラウンドで全員が同時に書き込むことができ、全員が書き込みを行ったときに権限がループせず、誰も書き込みできないことです。

node.js または socket.io 内にこれをより簡単に実行できる何かが存在する可能性があると思いました (私が行った方法はおそらく最善ではありません)、または他の何かが、私は初心者であり、何も見つかりませんでしたウェブ、私はあなたの助けを求めています。

ありがとうございました !

ps: 申し訳ありませんが、私の英語は私の母国語ではありません :)

4

1 に答える 1