2013-05-06 31 views
0

我正在建立一些node.js和socket.io,它允許用戶在textarea(幾乎像一個tchat)寫入,但我需要他們交替寫。例如:Node.js W/Socket.io - 切換用戶功能(允許和防止寫入)

  • 用戶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:請原諒我的英語不是我的第一語言:)

回答

0

有它只讀默認,然後在服務器端,當用戶連接,如果連接的唯一的插座,發出了「轉」。你也許應該處理那個輪到它斷開的人的情況,此時你應該做你的觸發器並讓其他人控制。

+0

感謝您的快速! 我目前正在處理您的解決方案,我會告訴您這是否有效。 (它不能解決通過用戶數組循環的問題,但它給了我思考問題的新方法,所以我可能會找到解決問題的方法) – hugohil 2013-05-06 22:51:37