2015-01-07 28 views
0

让我们有一个“复杂”的网站,有三个模块:“链接”,“家”,“聊天”。链接,首页只是一个静态的页面,不需要长时间轮询,它甚至不会启动。但是在任何时候“聊天”的情况下,新消息都可能从其他用户那里得到,并且我想立即显示它,而不刷新网站。Ajax,长轮询,多用户,聊天到达

因此,在“聊天”中,开始了长轮询,并且它检测到新聊天消息到达,所以轮询请求完成并发送“发送chatbox-div”消息 - 以便该站点可以刷新DIV。

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

编辑:我如何想象:让某处保存一个标志,指示消息到达,并且长时间轮询请求正在看这个标志。如果它发生变化,得到消息,并将该标志归零 - 但随后可能有些用户(某些请求)不会注意到这一点:

+1

通过长时间轮询,th e客户端定期检查服务器** ** *使用AJAX *获取新内容,一旦收到,新内容将简单地附加到div。没有必要刷新页面 –

+0

我编辑了问题,使其更加清晰 –

+0

是否有任何理由不希望长轮询自动更新div与新的内容?它似乎更有效率。但是,如果你愿意,你可以创建一个国旗。这都是可能的。 –

回答

1

Senario: One Server; N同一香奈儿的客户

服务器实现一个chanel的池;
池被配置如下(它可以是一个数组/类/ ...):
ID(整数/串)
=>如果一个客户端进行的连接,这将是一个新的记录被插入他的ID标识
=>此记录将被删除,如果客户做deconnection或退出此项香奈儿
留言(字符串):新的邮件必须串接到已存储在池老

客户端每次向服务器发送新消息的时间
1 - 池的所有信息将通过串联未读邮件被新的更新(除发送方)

每一次客户端向服务器请求(使用Ajax长池)
1 - 服务器将提供他的正确的信息基础上自己的ID
2 - 删除消息

使用这种实现,客户端可以接收空的消息,所以在前端,你必须做相应的操作