我正在开发一个网站,除其他外,它允许用户实时聊天(类似于Facebook聊天)。消息存储在MySQL表messages
中,其中包含消息的ID,发送者ID,接收者ID和时间。
当用户A与用户B聊天时,我通过SQL语句SELECT * FROM messages WHERE (senderID='userA' AND receiverID='userB') OR (senderId='userB' AND receiverID='userA')
获取所有消息。此语句检索用户A和用户B之间的所有消息。
当聊天打开时,我每秒都发送一个 AJAX请求(应该是更少还是更多?)来检查数据库中这两个用户之间是否有新消息。
我的问题是:
答案 0 :(得分:2)
你应该真的使用WebSockets,但如果你真的想要进行民意调查,你可以这样做:
您的系统应该包含对话,用户或参与者和消息。
当 John 第一次使用 Mary 启动对话时,您创建一个新的对话,其中包含唯一的{{ 1}}。该对话的参与者是 Mary 和 John 。
当用户首次打开过去对话时,您conversation_id
。
从那时起,当John向Mary发送消息时,您只需在数据库中SELECT * FROM messages WHERE conversation_id = 'xyz'
发送该消息。
当Mary发送下一个轮询信号时,她在她的消息中包含了她收到的 last INSERT
。这样您就可以message_id
。
Mary然后将新消息附加到她现有的消息列表中。
这假定SELECT * FROM messages WHERE message_id > 115 AND conversation_id = xyz
是一个自动递增的列。
其他指示: