Node.js w / Socket.io - 切换用户功能(允许和阻止写入)

时间:2013-05-06 21:31:17

标签: node.js socket.io user-permissions alternate

我正在使用node.js和socket.io构建一些东西,它允许用户在textarea中写入(非常像tchat),但我需要它们交替写。类似的东西:

  • 用户1正在写作。用户2和用户3 无法写。
  • 用户1发送消息。
  • 用户1 无法写入。允许用户2写入。用户3 无法写。
  • 用户2发送消息。
  • 用户1和用户2 无法写入。允许用户3写入。
  • 用户3发送消息。
  • 用户1正在写作。用户2和用户3 无法写。
  • ...... etc

目前,我(在客户端):

    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中的东西,它允许我更简单地做这个(我做的方式可能不是最好的),或其他任何东西,但因为我是初学者而且我发现网上没有任何内容,我在寻求你的帮助。

谢谢!

p.s:请原谅我的英语,这不是我的第一语言:))

1 个答案:

答案 0 :(得分:0)

默认情况下只读取,然后在用户连接时在服务器端,如果它们是唯一连接的套接字,则发出“转向”。您可能还应该处理轮到其断开连接的人的情况,此时您应该触发并让其他人控制。