好的,我正在建立一个类似聊天环境的东西,我希望进行近乎实时的对话(如果不是实时对话)。但我知道浏览器一次只会为每个域的事务放弃 2 个线程。所以我试图找出一种方法来进行同步聊天而不真正影响浏览器。我还知道浏览器往往会因同步请求而锁定。
那么从头开始在网站上创建类似聊天的环境的最佳方法是什么,假设数据库和脚本概念很好,它是连接的管理,想知道如何保持持久连接而不使浏览器拥塞并导致它可能卡住。
任何人有任何想法..我不是在寻找 flash 或基于 java 的解决方案。我也不想每秒轮询。但什么是堆栈印象,你会做什么。
最佳答案
首先,规范仅建议允许两个连接。大多数现代浏览器实际上最多支持 6 个。
使用纯 JavaScript 创建聊天系统有三种主要的公认方法:
投票
第一个解决方案很简单,只需每隔几秒(5 是一个不错的数字)轮询一次服务器以查看丢失的内容。它工作简单高效,但如果不小心,可能会导致大量不必要的请求,从而导致不必要的服务器负载。
对此的更好实现涉及轮询,以简单地检查自上次聊天更新以来是否发生了任何事情,如果是,则只需完成找出发生了什么的过程。节省服务器负载和带宽。
等待
这种方法更常用,浏览器向服务器发送请求,但该请求永远不会得到满足,而是继续“等待响应”。当有事情发生时,服务器输出它并满足请求,客户端发出另一个请求并重复该过程。这可以节省请求前端的时间,但最终可能会导致服务器上正在进行的进程积压。
Websocket
https://developer.mozilla.org/en/WebSockets
这涉及创建到服务器的直接套接字连接,允许在需要时将数据推送到客户端。不过它相对较新,并且可能存在一些兼容性问题,尤其是对于旧版浏览器。
其中,没有一个是明确的“最佳方法”;这取决于你的目标是什么以及什么是重要的。如果您有一个为最新浏览器设计的网站,那么 websockets 可能是您的答案,但如果您有一个小型服务器,那么例如轮询可能会更好。
关于php mysql jquery javascript 聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907128/