在类级别存储eventmachine websocket连接是否安全?

时间:2012-05-17 13:33:27

标签: ruby websocket eventmachine em-websocket

我正在编写一个聊天服务器应用程序,用户可以与他的一个朋友交换消息。当用户连接时,我将他的连接存储在类变量hash上:

@@connections[:user_id] = conn

当有人向用户发送消息时,我会在哈希上查找他的连接并通过它发送消息。有时客户端的连接只会死掉,并且不会调用onclose回调。

1 个答案:

答案 0 :(得分:1)

这很好用,这就是我开始编写Web IRC客户端时所做的,但问题是你将连接的用户耦合到一个ruby进程。如果您想启动第二个em反应器,那么第二个进程将不会共享相同的类变量。您可以通过使用haproxy在不同进程之间拆分用户来解决这个问题,但需要注意这一点。