2012-03-09 65 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

相关问题