javascript - 做消息推送使用Websocket与ajax定时刷哪种更耗性能???
阿神
阿神 2017-04-11 12:57:52
[JavaScript讨论组]

项目开发中遇到有推送消息的地方,需要实时或者伪实时的推送,我给后端建议用websocket,后端觉得搭建websocket会很耗服务器性能,让我就定时刷就行了。。。。

求解,是否websocket很耗性能?

阿神
阿神

闭关修行中......

全部回复(2)
怪我咯

WebSocket 的性能完全高于 Http,一次WebSocket连接其实就是一个Http请求,而轮询每一次都是Http请求。况且现在的一些框架随随便便都可以做到百万级量。

WebSocket 最核心的是服务端的被动性,因为对于Http请求而言,每一次都是一个request和response,而对于WebSocket可以是:“小弟,你有人给你发了条消息喔你收一下!”,而无须我隔一段时间向服务端问一下:“老头,有消息吗?,有消息的话你给我”;要知道一次Http所带的信息很重(Cookie\Header etc)的好吧。

那么问题来了,你们后端不愿意做,只有一个原因:。轮询多简单呀,后端什么都不用改,WebSocket 我后端还要给你搭一个,要是.NET还好,几行代码也就搞定了。

PHPz

WebSocket是用的长连接。

哪种更耗性能,我觉得这不是关键所在,你没有描述清楚你的ajax轮询的频率和你具体应用在哪一方面?Websocket对于延时性要求很高的应用来说自然是非常好的选择,但同时Websocket是html5引入的新特性,如果你使用的浏览器还是ie8,那就根本不用考虑这个问题了。Ajax轮询,对浏览器兼容性友好,实现起来更加容易,业务结构清晰,如果你的业务压力不大的话,用Ajax轮询就行了。

Websocket的性能损耗取决于你服务端语言的选型和实现细节,就目前来说,很多事件驱动的设计对Websocket是非常友好的,比如nodejs中的一个非常有名的模块socket.io,就能很方便的实现Websocket服务端业务,对于中小型的应用来说,结合其他缓存之类的技术,性能问题不大。同样的,如果你只会PHP,你可以选择使用swoole,同样的事件驱动的设计模型。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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