2012-03-09 111 views
1

我創建在其中,我打算讓用戶A生成一個特殊的聊天鏈接,這樣他/她可以與用戶溝通B.這是一個1-1的聊天模式的系統。下面是我的模型的模式。我需要知道它的可行性還是可以改進的。什麼是最好的1-1聊天模式? (AJAX/CI/JQ)

table messages 
chatid; {fk} 
message_id; {pk} 
timestamp; 
sender; 

table chat 
chatid; {pk} 
userA; 
userB; 
timestamp; 

下面是這種情況的控制流程:

  1. 用戶A的意圖與用戶B聊天
  2. 用戶A進入生成聊天會話頁面。
  3. 用戶A從列表中選擇用戶B。
  4. 用戶A生成聊天會話/ app/chatid/007
  5. 用戶A通過收件箱複製並粘貼URL以將其發送給用戶B.
  6. 用戶A和用戶B同意他們想聊天

我知道,有點怪異的時刻,因爲我不知道如何實現,其中用戶在線/離線檢查系統,雖然可以如果你有想法,就會流行起來。

  1. 用戶A打開的HH聊天URL;毫米也是如此用戶B.
  2. 他們開始聊天。
  3. 的頁面不重新加載,並與他們聊天的樂趣。

結束。 等待您的回覆。

提問者

我一直在尋找這個模式Editted。我不知道如何進一步添加它以顯示用戶a /用戶b在線/離線;也許是last_activity?你說。

tbl_chat 
------------- 
chat_id (pk) 
user_id_a (fk) 
user_id_b (fk) 
timestamp 
tinyint; 

tbl_msg 
------------- 
message_id (pk) 
chat_id (fk) 
user_id_sender (fk) 
message_body 
timestamp 

added tinyint; to tbl_chat 所以當用戶A點擊kill chat時,它會使其成爲1,默認爲tinyint = 0; 這樣殺死聊天。

+0

我喜歡它。它的老學校...... – joidegn 2012-03-09 10:01:01

+0

@joidegn哈哈,你是什麼意思,先生。 – 2012-03-09 10:22:12

+0

使用PHP長輪詢或Node.js的socket.io做聊天:http://stackoverflow.com/questions/333664/simple-long-polling-example-code – ZiTAL 2012-03-09 10:47:34

回答

3

爲了能夠將聊天擴展到兩個以上的用戶,並且不必在查詢中同時檢查chat.userA和chat.userB,我不會在聊天表中使用userA和userB。相反,我會添加一個表(例如chat_users),其中包含用戶名/ ids(無論您放在userA和userB中)和chatid。除此之外,我會說消息需要一個身體。

table messages 
chatid; {fk} 
message_id; {pk} 
timestamp; 
userid; {fk} 
body; 

table chat 
chatid; {pk} 
timestamp; 

table chat_user 
userid; {fk} 
chatid; {fk} 
+0

明白了。那麼最終的模型是? – 2012-03-09 12:52:14

+0

我編輯了我的答案 – joidegn 2012-03-09 13:07:26

+0

我剛剛對此做了一個想法。不是我期望的最好的模型。 – 2012-03-09 13:41:05

相關問題