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 客户端。我计划将客户端连接存储在每个用户的会话中。这样,我将为每个用户使用相同的问题。当用户注销时,我将关闭连接。

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

有什么想法吗。

4

3 回答 3

2

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

于 2010-08-16T17:09:02.270 回答
1

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

于 2009-12-11T22:33:31.923 回答
0

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

于 2011-07-08T17:12:52.207 回答