首先,规范只建议允许两个连接。大多数现代浏览器实际上最多支持 6 个。
使用纯 Javascript 创建聊天系统的主要接受方法有以下三种:
轮询
第一个解决方案很简单,只需每隔几秒轮询一次服务器(5 是一个不错的数字)以查看遗漏的内容。它工作简单高效,但如果不小心可能会导致大量不必要的请求,从而导致不必要的服务器负载。
一个更好的实现是通过轮询来简单地检查自上次聊天更新以来是否发生了任何事情,如果是,那么只有通过找出发生了什么的过程。节省服务器负载和带宽方面。
等待
这种方法更常用,它涉及浏览器向服务器发送一个从未完成的请求,而是一直“等待响应”。当事情发生时,服务器输出它并满足请求,客户端发出另一个请求并重复该过程。这样可以节省请求方面的费用,但最终可能会导致服务器上正在进行的进程积压。
网络套接字
https://developer.mozilla.org/en/WebSockets
这涉及到创建到服务器的直接套接字连接,允许在需要时将数据推送到客户端。虽然它相对较新,并且可能存在一些兼容性问题,尤其是对于旧浏览器。
其中,没有一个是专门的“最佳方法”;这取决于你的目标是什么,以及什么是重要的。如果你有一个为最新浏览器设计的网站,那么 websockets 可能是你的答案,但如果你有一个小型服务器,那么例如轮询可能会更好。