php mysql jquery javascript 聊天

标签 php javascript jquery mysql ajax

好的,我正在建立一个类似聊天环境的东西,我希望进行近乎实时的对话(如果不是实时对话)。但我知道浏览器一次只会为每个域的事务放弃 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/

相关文章:

PHP:为脚本的另一个实例存储数据

php - 如何从数组中删除不需要的值

javascript - 当按下回车键时使用ajax上传图像和文本字段值

jquery - ajax 请求后下载文件在 Chrome iOS 和 Android 中不起作用

javascript - 快速移动鼠标不会触发 mouseleave

php - 是否有更优雅的方法来检查表单默认值?

php - jQuery Mobile 登录处理程序

javascript print() 方法未按预期工作

javascript - 具有嵌套范围的 Angular,尝试使用 $parent 但 watch 仍然没有更新

javascript - Angular 2 : How to conditionally Disable or Enable the Add and Remove Button in PrimeNG PickList