我正在使用EventMachine和ruby on rails构建聊天系统。这是为了学习目的。
这是客户端连接服务器的方式。
c = TCPSocket.open(ip_address, port)
data = {:user_id => 2, :message => 'hello world'}
c.send(data)
response = c.gets
c.close
有效。然而问题是我无法获得当前正在房间聊天的人员列表,因为如上所示,客户端不断打开和关闭连接。
另一种方案是为每个连接的用户运行EventMachine客户端。我打算在每个用户的会话中存储客户端连接。通过这种方式,我将为每个用户使用相同的问题。当用户注销时,我将关闭连接。
但是,如果用户走出去,那么如何自行关闭客户端连接。
任何想法。
答案 0 :(得分:2)
您可以在Juggernaut库上构建,而不是自己编写。这是一个EventMachine框架,它有一个例子可以完成这种事情。
答案 1 :(得分:1)
如果消息存储在数据库中,则在最近5分钟内查询已写入消息的用户。这样,如果他们闲置超过五分钟,他们就会被自动考虑进入聊天室。
答案 2 :(得分:0)
普通的旧IRC使用ping?乒乓球!方法,也可以在这里应用:D