我正在构建一个实时游戏,主要基于聊天,我需要同时运行许多这样的聊天,通过网络套接字接收和发送数据。
有人告诉我,我不应该为每场比赛生成一个进程,而应该为每场比赛创建一个进程和一个线程(也许使用事件机)。
我在套接字部分使用 Juggernaut,它允许我使用发布/订阅系统向游戏中的所有玩家发送数据:每个玩家订阅一个游戏。但如何将每个玩家的数据发送到特定游戏呢?
我想可以把游戏ID或者频道ID从客户端发送到服务端,然后发送到对应的线程。
但是我如何向线程发送任何内容?
要将数据发送到线程,可以使用 Ruby 线程队列。
Ruby 3.3.0:https://ruby-doc.org/3.3.0/Thread/Queue.html
(如果您正在阅读本文并且有较新版本的 Ruby,请随时编辑此答案以更新 Ruby 版本)