Я создаю что-то с 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 не могут написать.
- ... и т.д.
На данный момент, у меня есть (на стороне клиента):
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, что позволяет мне делать это более просто (так, как я сделал, вероятно, не самый лучший) или что-то еще, но так как я новичок и я ничего не нашел в Интернете, я прошу вас о помощи.
Спасибо!
пс: пожалуйста, простите мой английский не мой первый язык :)
Спасибо за вашу быстроту! В настоящее время я работаю над вашим решением, я скажу вам, если это сработает. (Он не фиксирует проблему цикла через массив пользователей, но он дает мне новые способы мышления, поэтому я, возможно, найду это, работая над вашим ответом) – hugohil