2009-12-11 131 views
4

我在軌道上使用EventMachine和ruby構建聊天系統。這是爲了學習的目的。EventMachine:如何使用Rails應用程序構建聊天系統

這是客戶端連接到服務器的方式。

c = TCPSocket.open(ip_address, port) 
data = {:user_id => 2, :message => 'hello world'} 
c.send(data) 
response = c.gets 
c.close 

它的工作原理。然而,問題在於我無法獲得正在聊天室中的人員列表,因爲如上所示,客戶端不斷打開和關閉連接。

另一種方案是爲每個連接的用戶運行EventMachine客戶端。我打算爲每個用戶在會話中存儲客戶端連接。這樣我就會爲每個用戶使用相同的問題。當用戶註銷時,我將關閉連接。

但是,如果用戶走出來,我該如何自我關閉客戶端連接。

任何想法。

回答

1

如果郵件存儲在數據庫中,則查詢最近5分鐘內寫入郵件的用戶。這樣,如果他們閒置超過五分鐘,他們會自動被認爲離開聊天室。

2

而不是自己寫,你可以在Juggernaut圖書館的基礎上建立。這是一個EventMachine框架,它有一個正是這種事情的例子。

+0

劍聖只支持帶有xml套接字和rails2的flash。你對那些想要使用websockets和rails3的人有什麼建議嗎? – Hackeron 2011-01-23 06:04:28

+1

我用EventMachine的[em-websocket]庫(https://github.com/igrigorik/em-websocket)庫取得了一些成功,但你必須在自己的方法中分層調用客戶端。 – tadman 2011-01-24 17:07:54

0

普通的舊IRC使用ping?乒乓球!方法,這也可以在這裏應用:D

相關問題