Socket 和 WebSocket 哪个大并发性能高
WebSocket就是Socket
Socket是传输层协议
WebSocket是应用层协议(应用层协议有很多,例如http,smtp,等等)
应用层协议是建立在传输层协议之上的,其基本属性有2个:
1是需要保证报文的完整性(也就是报文体的长度,如果是udp协议还要保证报文的顺序)
2是如何编解码(报文的编码类型,常见的例如:multipart,KeyVlaue,Json,xml,或是前20个字节是名字,后4个字节是分数,等等等等)
任何应用层协议都离不开以上两点,即便你自定义一套应用层协议也是如此。
你熟读WebSocket数据帧的定义后,你就会发现,WebSocket对第一个byte的定义是精确到bit上的。其他如http,smtp,或是多数人使用socket自定义的协议,都是精确到byte级别的,而且最小有效报文长度都是几个byte,而WebSocket最小有效报文长度为1个byte。
综上所诉,WebSocket性能最好
■网友
三层的socket 比顶层的 websocket 性能高,并发量大。
socket是最底层了,tcp和udp基于socket封装通讯,用户对于通讯行为可以针对性设定及优化,websocket基于http2以上,http基于tcp(不包括http3)。
websocket 到 socket 中间至少进行两层封装,websocket在同等条件下并发和吞吐肯定比socket慢。
就比如七层nginx的负载均衡跟四层lvs的负载均衡跟三层的f5负载均衡一样。越往下性能越高、吞吐越高。
■网友
这个问题我换一个问法题主应该就能理解了:汽车轮子和法拉利谁的速度快?题主有木有感觉到莫名其妙?=====我是纯洁的分割线====这事不吐不快啊!为什么老要拿应用层协议和网络接口做性能比较呢?而且这事不罕见啊喂!我也见过很多老司机一言不合就宣称要弃用现有协议改用socket来提升传输性能啊喂!什么鬼?为什么要拿两个职责完全不同的东西来比较?
■网友
看你的客户端受限环境,如无必要,当然不要中WebSocket 。性能的话,当然基于TCP 自己做业务协议(封包格式)更好,没必要再加一层Websocket 去做协议,多了一层,没好处。
■网友
websocket多了开始的http协商升级协议这一步。。。你说性能跟纯tcp socket server咋样?
■网友
通过一些分析来回答这个问题,可能是不对的,勿喷。
前提:传输内容的量是一样多的。此外,我理解socket和websocket应该是编程的接口,应该在同一种语言平台上比较,比如大家都在python上比较或者都在java上比较。
socket接口和websocket接口肯定不在一个层面上,这是针对网络的七层协议来说的。socket应该比websocket的层面低,这是因为websocket是基于HTTP协议的,这个协议在七层模型中的层次是很高的,它属于应用层。而信息沿着七层协议向上传递这个过程肯定是有消耗的。这么说来socket应该比websocket快。
此外还需要注意的是,浏览器是支持websocket的,但是并不支持socket。
■网友
游戏客户端程序员基本功堪忧啊
■网友
正好项目中有同时用到socket和websocket,先说一下场景,winform数据通过socket传给nodejs的socketServer,然后通过webSocket传给web浏览器显示出来,暂时没什么问题(Socket接收的是机器的实时生产、温度、压力变化数据),WebSocket是对Socket和 http的封装,当然性能肯定是要差一些的,真正的大量并发我没测试过,看网上用MQ的方式比较多,MQ不需要组包,Socket接收需要自已组包!
■网友
伪问题。套接字只是一套传输层接口而已,没有可比性。
■网友
【Socket 和 WebSocket 哪个大并发性能高】 socket和websocket本质上不是一个层次的东西, 不能拿来对比。
推荐阅读
- 『大中城市』江苏4市2涨2跌 70个大中城市11月房价报告出炉
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 上海或苏州有没有比较好的大数据培训机构
- 这个大叔太暖了!高校保安连续14天接送骨折女生上课
- 汽车知识|高压水枪别乱用! 洗车别掉进这12个大坑
- 车聚网|突然觉得,华为的“自动驾驶技术”是一个大泡泡?|聚论
- 请问一个大学生怎样有计划的成为一名数据分析师
- |宿豫一辆小小电动三轮车成“客车” 载3个大人5个孩子
- 小小三轮车载了8个人,3个大人5个小孩
- 我是个大一的大学生,过了这个暑假就大二了,专业是学会计的,暑假在家感觉想学点技能,不知道有没啥推荐
