javascript - 想做一个类似于QQ的网页版聊天功能,如何实现??
PHP中文网
PHP中文网 2017-04-11 12:50:52
[JavaScript讨论组]

制作网页版聊天工具的时候,大家通常是用什么方式来进行实时消息传递的??

我所知道的 :

  1. ajax轮询(都说浪费资源,不好...)

  2. EventSource(支持不好,IE压根不支持..)

  3. WebSoket(不是很了解...)

而且,百度搜索后了解到在浏览器不支持 WebSocket 的情况下,居然还有第三方库能够实现 WebSocket ,是否所谓的 WebSocket 也是如同 EventSource 一样,核心原理都是用 ajax 的轮询方式实现即时通信??

目前普遍在用的网页实时通信技术是什么??小白求教,求大神空降...

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
PHP中文网

说两个PHP的方案,其中之一的WorkerMan已经有人说了,另一个就是峰哥基于Swoole开发的PHPWebIM.

PECL扩展Swoole支持使用PHP来编写高性能的socket应用:

apt-get install php-pear php5-dev
yum install php-pear php-devel
pecl remote-info swoole
pecl install swoole

PHPWebIM是Swoole官方基于PHP Swoole扩展和Swoole Framework开发的WebSocket网页即时聊天工具.
PHPWebIM支持WebSocket+Comet两种协议,可用于所有种类的浏览器包括IE,请看Demo.

如果只是实现比较实时的消息通知,也可以用AJAX轮询:
1)单页面(只在一个页面做轮询)
2)setInterval间隔被动轮询(keep-alive持久连接,比如30秒)
3)window.onfocus窗口获得焦点主动触发(event-driven)
轮询间隔时间过短,用户打开页面过多,可能会导致服务器压力过大.
对于实时性要求不高的业务,可以把间隔时间加大,比如2分钟轮询1次.

window.onblur  = function() {document.title = '失去焦点';};
window.onfocus = function() {document.title = '获得焦点';};
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号