ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-客户端从服务器检索聊天消息的最佳方法?

2019-10-31 03:31:52  阅读:138  来源: 互联网

标签:server-sent-events websocket javascript php jquery


我正在使用JavaScript,jQuery,MySQL和PHP构建聊天应用程序,而我只是想知道客户端从服务器检索聊天消息的最佳方法是什么?我目前的潜在候选人是轮询,长轮询,HTML5服务器发送的事件(EventSource)和WebSockets.其中哪一个是最快的(即时消息)和最有效的方法(请解释为什么也可能)?或者,如果有更好的方法,请在答案中进行详细说明.

另外,我也查看了Node.js Socket.IO,但是我发现的文档和示例代码对我来说并没有什么意义.

最后,我将XAMPP用作本地服务器并将MySQL用作此应用程序的数据库.

任何帮助,将不胜感激.

解决方法:

巧合的是,您列出的选项是按效率从高到低的顺序列出的.

轮询效率最低.它将轮询是否有消息,并在其他客户端发送和接收的消息之间引入延迟.

长时间轮询比较好;那么您可以在发送邮件时收到该邮件,但是重新连接可能会稍有延迟.在此延迟期间,将不会传递消息,但是实际上它是瞬时的.

COMET(未提及)比长轮询更好,但比服务器发送事件差.由于大多数Web服务器和浏览器的连接都有超时,因此它有时也必须重新连接,但是每当发送消息时都不需要重新建立连接.像长时间轮询一样,重新连接时可能会有延迟,但是否则通常是瞬时的.

服务器发送的事件与COMET类似,但是不进行填充时,它具有浏览器的本机支持,因此它可以绕过超时限制,并且只需要在其生命周期内建立一个连接(只要连接没有断开即可). .另一个好处是,如果断开连接而无需您执行任何客户端代码,它将自动重新连接.这是瞬时的.

到目前为止,WebSocket是所有这些选项中最好的.它只需要一个连接,并且是双工的:不仅可以通过它接收消息,而且还可以通过它发送消息,而不必每次要发送消息时都单独连接到服务器.与服务器发送事件不同,它确实需要更多代码:如果连接断开并且服务器端实现通常更为复杂,它不会自动重新连接.我也不确定您是否可以将其与Apache / XAMPP一起使用.这是瞬时的.

Socket.io是一个支持(几乎是?)所有这些以及更多(例如,Flash套接字)的库,并将其抽象到一个不错的API之后,因此您不必处理浏览器对它们的支持的特殊性. .它与选择使用的传输方式一样快,这取决于它所运行的浏览器.它还可以减少您必须编写的代码量.但是,如果对您来说太复杂了,而您又不关心较旧的浏览器,那么就没有必要了.此外,它真的很喜欢独立运行.您也许可以让XAMPP代理它,但是同样,我不知道是否可以将Apache配置为将WebSocket转发给它.

标签:server-sent-events,websocket,javascript,php,jquery
来源: https://codeday.me/bug/20191031/1972602.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有