How to communicate with threads in Ruby?

juggernaut, real-time, ruby, ruby-on-rails

Solution

To send data to a thread, you can use Ruby Queue:

https://ruby-doc.org/core-2.5.1/Queue.html

Problem

I'm building a real time game, mostly chat based, and I need to have many of these chats running concurrently, receiving and sending data through web sockets. I have been told that instead of spawning one process per game, I should have one process with one thread per game (maybe using Event Machine). I'm using Juggernaut for the sockets part, it lets me send data to all the players in a game by using a publish/subscribe system: each player subscribes to one game. But how do I send data from each player to that particular game? I was thinking that I could send the game ID or channel ID from the client to the server, and then send it to the corresponding thread. But how do I send anything to a thread?

Original source