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

4
我正在使用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个回答

2

如果您不想自己编写代码,可能可以使用Juggernaut库进行构建。这是一个基于EventMachine框架的库,其中有一个示例可以精确地完成这种操作。


Juggernaut只支持带有XML sockets和Rails2的Flash。对于那些想要使用WebSockets和Rails3的人,您有什么建议吗? - Hackeron
1
我在使用em-websocket库时取得了一些成功,但您需要自己添加分发调用到客户端的方法。 - tadman

1
如果消息存储在数据库中,请查询最近5分钟内写入消息的用户。这样,如果他们闲置超过5分钟,就会自动被视为已离开聊天室。

0

普通的IRC使用ping?pong!方法,这里也可以应用:D


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接