3

我制作了一个约会网站,我在其中使用了一对一的聊天应用程序,例如 facebook。当一个用户向另一个用户发送任何消息时,它会显示在他们的弹出聊天框中,但我已经使用 ajax 完成了此操作。我使用javascript setInterval 函数在每个间隔中运行。但我认为流程不是优化的。我不想每次都向服务器发出不必要的请求,而是只在该用户有新消息时触发。有没有其他方法可以做到这一点,或者像 facebook、gmail 这样的大网站使用的任何其他协议?

4

4 回答 4

5

您可以使用WebSockets来执行此操作,但这需要服务器实现和支持它的 Web 浏览器。

另一种技术是使用Long Polling,但同样,这需要在客户端和服务器上工作。优点是这是一种跨浏览器兼容的技术。

于 2013-06-08T15:02:11.967 回答
0

读入长轮询。这是facebook使用的。基本上,您的客户端会进行一次 Ajax 调用,并且在有数据推送给它之前不会返回任何内容。我很确定它需要一些自定义服务器配置,因此如果您在共享主机上进行开发,它不会削减它。如果您想要效率,那么长轮询将是正确的,尽管更复杂的方法。

于 2013-06-08T15:07:16.077 回答
0

服务器发送事件似乎是另一种选择。

聊天示例: http: //motyar.blogspot.com.es/2012/01/simple-chat-application-with-html5.html 文档:https ://developer.mozilla.org/en-US/docs/Server -sent_events

于 2013-06-08T15:10:52.783 回答
0

我同意 Josh 的观点,WebSockets 值得研究,但是如果您无法访问服务器,您可以使用Firebase之类的东西作为后端。

https://www.firebase.com/index.html

于 2013-06-08T15:03:38.990 回答