Ajax,长轮询,多用户,聊天到了

时间:2015-01-07 17:43:48

标签: javascript php jquery ajax

让我们拥有一个复杂的"网站,有三个模块:"链接","家庭","聊天"。链接,家里只是一个类似静态的页面,不需要长时间轮询,它甚至没有开始。但是如果"聊天"任何时候新消息可能从其他用户到达,我想立即显示它,而不刷新网站。

所以,在"聊天"启动了长轮询,它检测到新的聊天消息到达,因此轮询请求结束并发送"发送chatbox-div"消息 - 以便该站点可以刷新DIV。

但是让我们想象现在有三个用户正在观看这个模块。如何注意所有这些内容以刷新内容?

编辑:我的想象:让某处保存一个标志,表明消息已到达,并且长轮询请求正在观看此标志。如果它改变了,得到消息,并将该标志归零 - 但随后可能有些用户(某些请求)不会注意到

1 个答案:

答案 0 :(得分:1)

Senario: 一台服务器; N个客户在同一个香奈儿

服务器为一个chanel实现一个池;
池配置如下(它可以是数组/类/ ...):
ID (整数/字符串)
=>如果客户端建立了连接,则会插入新记录,并且将通过其ID来识别 =>如果客户端断开连接或退出此chanel,则此记录将被删除 MESSAGES (字符串):新邮件必须连接到已存储在池中的旧邮件

客户端每次向服务器发送新消息时 1 - 池中的所有消息都将通过新的连接未读消息进行更新(发件人除外)

客户端每次向服务器发出请求(使用Ajax Long Pooling)
1 - 服务器将根据他的身份证明给他正确的消息 2 - 删除留言

通过此实现,客户端可以收到空消息,因此在前端您必须执行相应的操作