默认

Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

查看数: 268711 | 评论数: 17 | 收藏 13
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-05-26 15:09

正文摘要:

前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sent Events)。本文将简要介绍这4种技 ...

评论

SamWu 发表于 3 年前
受教了,感谢分享
dengxiong90 发表于 6 年前
学习了,谢谢
tuna 发表于 7 年前
受教了
JackJiang 发表于 7 年前
引用:TeochewZhang 发表于 2017-09-25 16:54
为什么原生的用websocket会耗费流量?那用什么呢?我看有些推送SDK是用websocket的。

从理论上来说,websocket的是基于TCP实现的,握手完成后的长连接通信过程中,流量消耗就是你自已收发的数据,也不存在说什么很耗流量。

关键看你传的是什么数据了,就像用XMPP协议的说它很耗流量一样,但这不能怪TCP呢,对吧。所以关键看你要传的数据格式是什么。

另外,现在WebSocket越来越成熟,手机端的原生代码库也出现来越来越多的Websocket库,所以在手机端用原生代码以Websocket为基础来实现即时通讯,现在看来也是个可行的方案,但主要看手机端的websocket库的成熟度、稳定性,就像当初在原生端选择http的库一样(模拟的是浏览器上发起http请求),道理是相同的。

有机会的话,我倒是有想法为MobileIMSDK-Web开发原生的手机端lib,这样ios原生代码、android原生代码、Web客户端都可以用同一套WebSocket服务端了,这样就不用维护两种类型的服务端,服务端省事太多了。
TeochewZhang 发表于 7 年前

为什么原生的用websocket会耗费流量?那用什么呢?我看有些推送SDK是用websocket的。
nodcat 发表于 7 年前
很不错!
JackJiang 发表于 8 年前

原生用WebSocket有点脱裤子放屁的意思。
漠北之夜 发表于 8 年前
引用:JackJiang 发表于 2016-11-19 20:13
如果是原生APP的话,用Websocket就有点本末倒置了。如果是Hybrid混合HTML5应用,那也就无可厚非。

原生的
JackJiang 发表于 8 年前
引用:漠北之夜 发表于 2016-11-19 10:56
是啊,公司技术负责人做了十几年的后台开发,不懂移动端这一块,我对IM一开始也没接触过,当初我是推荐他 ...

如果是原生APP的话,用Websocket就有点本末倒置了。如果是Hybrid混合HTML5应用,那也就无可厚非。
漠北之夜 发表于 8 年前
引用:JackJiang 发表于 2016-11-10 21:22
你在移动端用Websocket推送?

是啊,公司技术负责人做了十几年的后台开发,不懂移动端这一块,我对IM一开始也没接触过,当初我是推荐他们用第三方的推送,他们又说不这么搞,说什么B/S是用的WebSocket,要用那一套,直接上来需求都不是很明确就赶紧干,我都无语了
JackJiang 发表于 8 年前
引用:漠北之夜 发表于 2016-11-10 15:59
公司用的WebSocket做推送,流量耗费好大

你在移动端用Websocket推送?
漠北之夜 发表于 8 年前
公司用的WebSocket做推送,流量耗费好大
phpcs123 发表于 8 年前
好 很不错
JackJiang 发表于 8 年前
引用另一个网友的评论:

PHP即时通讯国人就搞了可用的两套方案,一套是WorkerMan,一套是Swoole.
国人纯PHP开发的高性能聊天室框架WorkerMan:
http://www.workerman.net/workerman-chat
http://doc.workerman.net/start/environment.html
前端:HTML5 WebSocket
后端:PHP-CLI (不依赖Nginx/Apache)
WorkerMan用到了若干PHP进程控制PECL扩展(不支持Windows):
pcntl: 进程创建,信号控制,定时器,进程状态监控
posix: 守护进程化,用户组控制
sysvshm: 共享内存,进程间通信
sysvmsg: 消息队列,进程间通信
libevent: 让PHP可以使用系统epoll/kqueue等高级事件处理机制,能够显著提高WorkerMan在高并发连接时CPU利用率.
proctitle: 更改进程的名称

PECL扩展Swoole支持使用PHP来编写高性能的socket应用:
pecl remote-info swoole
http://www.swoole.com
http://git.oschina.net/matyhtf/swoole/blob/master/examples
PHPWebIM是Swoole官方基于PHP Swoole扩展和Swoole Framework开发的WebSocket网页即时聊天工具.
PHPWebIM支持WebSocket+Comet两种协议,可用于所有种类的浏览器包括IE.
https://github.com/matyhtf/PHPWebIM
Demo: http://webim.swoole.com
mo_mean 发表于 8 年前
受教了·
什么狗屁云 发表于 8 年前
不错不错,秒懂了
IMDeveloper 发表于 8 年前
总结的很好,再也不用纠结了该选啥了,一目了然

返回顶部