2013-05-06 5 views
0

node.js 및 socket.io를 사용하여 사용자가 텍스트 영역 (거의 tchat와 비슷 함)에 글을 쓸 수 있도록합니다. 하지만 나는 번으로 번갈아 가야합니다.. 다음과 같이 입력하십시오 :Node.js w/Socket.io - 사용자 전환 기능 (쓰기 허용 및 금지)

  • 사용자 1이 작성 중입니다. 사용자 2 및 사용자 3 을 쓸 수 없습니다.
  • 사용자 1이 메시지를 보냅니다.
  • 사용자 1 을 쓸 수 없습니다. 사용자 2는 쓰기가 허용됩니다. 사용자 3 을 쓸 수 없습니다.
  • 사용자 2가 메시지를 보냅니다.
  • 사용자 1 및 사용자 2 을 쓸 수 없습니다. 사용자 3은 쓰기가 허용됩니다.
  • 사용자 3이 메시지를 보냅니다.
  • 사용자 1이 편지를 쓰고 있습니다. 사용자 2 및 사용자 3 을 쓸 수 없습니다.
  • ... 지금은 등

, 나는 (클라이언트 측)이 있습니다

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'); 
    }) 

클라이언트에서 나를 만든다 : 서버 측

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

옆면 :

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

문제는 응용 프로그램에 연결할 때 새 사용자에게 쓰기 권한이 있으므로 첫 번째 라운드는 동시에 모두 쓸 수 있으며 모두 작성하면 권한이 루프되지 않으며 아무도 쓸 수 없다는 것입니다.

node.js 또는 socket.io 내부에 뭔가가있을 수 있다고 생각했기 때문에이 방법을 더 간단하게 할 수있었습니다 (내가 한 방식이 아마도 최고는 아님). 웹상에서 아무 것도 발견하지 못했습니다. 당신의 도움을 요청하고 있습니다.

감사합니다.

PS : 실례 내가 사용자가 연결할 때

답변

0

들이 연결되어있는 유일한 소켓의 경우, '턴을 방출, 서버 측에서 다음, 기본적으로 읽기 전용을 가지고 : 내 모국어가 아닌 영어 '. 턴을 한 사람이 끊어지는 경우를 처리해야합니다. 이때 트리거를 수행하고 다른 사람이 제어 할 수있게해야합니다.

+0

감사합니다. 현재 귀하의 솔루션을 개발 중입니다.이 솔루션이 제대로 작동하는지 알려 드리겠습니다. (그것은 사용자 배열을 통해 루프의 문제를 해결하지는 못하지만 문제를 생각하는 새로운 방식을 제공하므로 사용자의 답변을 찾을 때 유용 할 것입니다) – hugohil