2013-02-21 94 views
0

我想用socket.io做一個谷歌/臉譜網聊天克隆。socket.io私人和羣聊

當用戶連接到服務器,我把用戶在用戶ID命名的房間(所以,如果用戶有多個標籤頁打開時,所有進入同一個房間,並在所有選項卡收到消息)。當A發送消息給B時,我將它廣播到以B命名的房間。在UI中,我有每個具有發送者ID的聊天窗口,因此當用戶收到消息時,我找到具有發送者ID的窗口並用新的窗口更新窗口信息。簡單。

現在,A和B邀請C和d在羣組交談加入。所以聊天變成了羣聊。我被困在這裏。我如何處理這種情況?我如何跟蹤客戶端UI和服務器中的聊天?

回答

0

你總是可以命名用戶組的連接(帶分隔符的一些)的一些任意值(如id)進行排序聊天。因此,如果您的用戶A的ID爲USERA,用戶B的ID爲USERB,則包含它們的房間將爲USERA-USERB。 (注意,只有在用戶標識符中沒有破折號時,這個模式纔會起作用)。當用戶C加入聊天室時,打開一個ID爲USERA-USERB-USERC的房間,將所有用戶添加到房間中,並將來自先前對話的消息重新播送回用戶。

注意這將打開UserA和用戶B新的對話,你可能不希望這樣做。在這種情況下,您必須找到一種混洗房間的方式,以便更改房間ID(您必須仔細考慮),然後將最後x個消息重播到新用戶。

另要注意,你必須發送相關的房間ID與一切讓客戶知道哪些聊天事件是關於發送到客戶端的事件。

+0

是的,我在同一直線上,但認爲在客戶端管理更新roomID得到棘手。我仍在制定一些解決方案。一旦我鍛鍊一些具體的東西,我會更新。 – SamSerious 2013-02-22 01:35:27