Как общаться с потоками в Ruby?

Я создаю игру в реальном времени, в основном основанную на чате, и мне нужно, чтобы многие из этих чатов работали одновременно, получая и отправляя данные через веб-сокеты.

Мне сказали, что вместо порождения одного процесса на игру у меня должен быть один процесс с одним потоком на игру (возможно, с помощью Event Machine).

Я использую Juggernaut для части сокетов, он позволяет мне отправлять данные всем игрокам в игре, используя систему публикации/подписки: каждый игрок подписывается на одну игру. Но как отправить данные от каждого игрока в эту конкретную игру?

Я думал, что я мог бы отправить идентификатор игры или идентификатор канала от клиента к серверу, а затем отправить его в соответствующий поток.

Но как мне отправить что-нибудь в поток?


person HappyDeveloper    schedule 06.04.2012    source источник
comment
Рассматривали ли вы возможность использования Redis? Возможно, у вас может быть действие, которое получает данные и сохраняет их в Redis (redis.io).   -  person Alex Watt    schedule 06.04.2012


Ответы (1)


Чтобы отправить данные в поток, вы можете использовать Ruby Queue:

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/thread/rdoc/Queue.html

person joelparkerhenderson    schedule 06.04.2012