EventMachine:如何使用Rails应用程序构建聊天系统

时间:2009-12-11 22:30:53

标签: ruby eventmachine

我正在使用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客户端。我打算在每个用户的会话中存储客户端连接。通过这种方式,我将为每个用户使用相同的问题。当用户注销时,我将关闭连接。

但是,如果用户走出去,那么如何自行关闭客户端连接。

任何想法。

3 个答案:

答案 0 :(得分:2)

您可以在Juggernaut库上构建,而不是自己编写。这是一个EventMachine框架,它有一个例子可以完成这种事情。

答案 1 :(得分:1)

如果消息存储在数据库中,则在最近5分钟内查询已写入消息的用户。这样,如果他们闲置超过五分钟,他们就会被自动考虑进入聊天室。

答案 2 :(得分:0)

普通的旧IRC使用ping?乒乓球!方法,也可以在这里应用:D