我有一个网站需要像Facebook一样实时向在线客户发送通知,经过更多的谷歌搜索,我发现了很多关于推拉技术的文档。我从这个文档中找到了使用Ajax或Sockets实现它们的方法。我需要知道在我的情况下最好使用什么,以及如何使用javascript或jquery和php编码。
答案 0 :(得分:2)
如果不详细了解你的情况,我不能说你的情况最好用。
在大多数情况下,让客户端每隔一两秒检查一次服务器就足够了,询问是否发生了新的事情。我更喜欢在套接字上使用套接字,因为它可以在没有任何配置更改的情况下在每个Web服务器上运行,并且可以在支持AJAX的任何浏览器中使用,甚至是旧的。
如果您的客户端很少(因为每个客户端都需要在服务器上打开一个套接字)并且您想要实时,您可以使用websockets。有几个PHP实现,例如这个:http://code.google.com/p/phpwebsocket/
答案 1 :(得分:2)
如果您可以确保每个登录用户只打开一个浏览器,那么您可以轻松应用这种长轮询技术。
Ajax呼叫政策:
服务器响应政策:
如果有更新响应立即。检查是否有依赖会话的更新; (如果你能像收到的最新消息那样从客户端发送一些提示更好;第二次更新检查机制将消除上面提到的单一浏览器打开的限制)
否则睡觉()1秒; (不要使用无限循环但使用睡眠)然后检查是否有更新;如果更新有响应;如果不再睡1秒钟;重复此操作,直到总共10秒钟过去,然后回复,没有更新
如果您应用此策略(通常称为长轮询),在重负载情况下,您会发现处理器使用率从95%降低到4%。
希望这可以解释。祝你好运。
答案 2 :(得分:0)
只需使用jQuery即可应用长轮询技术。
套接字在任何地方都不受支持,您还需要在服务器上打开一个侦听套接字才能使其正常工作。