默认

WebSocket详解(六):刨根问底WebSocket与Socket的关系

查看数: 105322 | 评论数: 17 | 收藏 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-12-15 15:28

正文摘要:

1、前言 对于很多初次接触Web端即时通讯技术的人来说,WebSocket是个很新的概念,但无疑它也是当前Web端即时通讯技术中最热门的关键词。随便点开一篇文章,只要说打算开发Web端即时通讯类应用,老司机们无一例外推 ...

评论

liergou 发表于 2 年前
引用:溺水的小青蛙 发表于 2021-06-29 09:02
嗯 我是想换底层直接使用websocket,不过不知道会不会在效率方面不如直接使用socket,毕竟一个是应用层的 ...

我和你的想法一样的,我也是用websocket做app的实时通信的,我觉得没有问题啊。tcp再强大,一我把握不住,二我不需要tcp的强大,我的场景很简单websocekt可以快速实现为什么不用?那有tcp为什么还要用http?因为简单啊,有tcp为什么要用websocket,因为简单啊
至于效率问题,你自己封装个协议,就算比websocket效率高个数量级,但你有多大并发,多大数据量?所以我觉得一般情况下app用websocket肯定没有问题
JackJiang 发表于 2 年前
引用:溺水的小青蛙 发表于 2021-06-30 16:14
ok  这个我懂的  肯定越底层实现,可操作空间越大的,我们买的RainbowChat和MobileMSDK源码里,websocket ...

是的,新版的MobileIMSDK里会有,但我还没有正式对外发布
溺水的小青蛙 发表于 2 年前
引用:JackJiang 发表于 2021-06-30 15:11
虽然我的 MobileIMSDK  里已经支持WebSocket,但你要让我把移动端也换成WebSocket去连,我肯定不干,跟We ...

ok  这个我懂的  肯定越底层实现,可操作空间越大的,我们买的RainbowChat和MobileMSDK源码里,websocket那块还是待实现,是有版本了吗
JackJiang 发表于 2 年前
引用:溺水的小青蛙 发表于 2021-06-30 14:49
对,用websocket的话不需要去考虑半包粘包的策略了,其他倒也没什么不同,而且对刚接触长连接的开发来说 ...

虽然我的 MobileIMSDK 里已经支持WebSocket,但你要让我把移动端也换成WebSocket去连,我肯定不干,跟WebSocket为了简单而简单的那点api相比,tcp的可操作空间大多了,并且各种场景久经考验。
溺水的小青蛙 发表于 2 年前
引用:JackJiang 发表于 2021-06-29 21:15
我想表达的意思是,有更强大的(准确地说是更底层),技术资源(包括源码、资料)更丰富的,久经考验的tc ...

对,用websocket的话不需要去考虑半包粘包的策略了,其他倒也没什么不同,而且对刚接触长连接的开发来说,websocket确实好上手一些,其实服务端倒也没什么,两种都可以一起实现
JackJiang 发表于 2 年前
引用:溺水的小青蛙 发表于 2021-06-29 14:58
WebSocket API是 HTML5 标准的一部分, 但这并不代表 WebSocket 一定要用在 HTML 中,或者只能在基于浏览 ...

我想表达的意思是,有更强大的(准确地说是更底层),技术资源(包括源码、资料)更丰富的,久经考验的tcp、udp,为什么要用才标准化没几年,连客户端的各种库都是开源或半开源的(你肯定也在找这些库)、未经大产品考验的东西,你干嘛非得去舍近求远啊。。。

web技术里用它,那是因为在它之前并没有真正的长连接技术,它就是为了解决这个问题而出现,而你富客户端不存在这些问题,用它的目的是啥呢。。。

我觉得app端用webscoket的,多数情况肯定不是因为websocket比更底层的tcp更好,而是因为手上没有技术积累,与其从tcp撸,而不如从看似更简单的webscoket开始,就是这个心态。而且,还能跟web端用同一种接入层。。。 貌似看起来真的很美 。。
溺水的小青蛙 发表于 2 年前
引用:JackJiang 发表于 2021-06-29 09:17
回答你的问题很简单,WebSocket这个组合词,前面那3个字母啥意思?你体会一下就有答案了

WebSocket API是 HTML5 标准的一部分, 但这并不代表 WebSocket 一定要用在 HTML 中,或者只能在基于浏览器的应用程序中使用,这个是文章里的内容,我觉得不能因为命名是web,就说明不适合用在app吧
溺水的小青蛙 发表于 2 年前
引用:JackJiang 发表于 2021-06-29 09:17
回答你的问题很简单,WebSocket这个组合词,前面那3个字母啥意思?你体会一下就有答案了

我的理解是这样的:早期大家都是使用socket,经过自己的逻辑封装做底层通讯协议,然后h5的大佬制定了一套通用的协议,命名为websocket,使得大家可以快速上手tcp长连接,后来不止h5,各端都开始支持这套协议,就像短连接都遵循http协议这样。
也不知道我的理解对不对,因为使用websocket的话,app也是支持的,web端也会容易开发一些,但是如果是处理起来效率不如直接使用socket的话,还是要用socket的,现在属于选型阶段。
JackJiang 发表于 2 年前
引用:溺水的小青蛙 发表于 2021-06-29 09:02
嗯 我是想换底层直接使用websocket,不过不知道会不会在效率方面不如直接使用socket,毕竟一个是应用层的 ...

回答你的问题很简单,WebSocket这个组合词,前面那3个字母啥意思?你体会一下就有答案了
溺水的小青蛙 发表于 2 年前
引用:JackJiang 发表于 2021-06-28 21:30
你的意思是你买的代码,在App端用websocket作为底层通信协议,而不是直接用TCP?

嗯 我是想换底层直接使用websocket,不过不知道会不会在效率方面不如直接使用socket,毕竟一个是应用层的协议,一个属于是直接调用传输层
JackJiang 发表于 2 年前
引用:溺水的小青蛙 发表于 2021-06-28 18:26
想问一下,WebSocket是应用层协议,建立的时候会多走一次http请求,但是之后发送数据也是直接通过tcp传输, ...

你的意思是你买的代码,在App端用websocket作为底层通信协议,而不是直接用TCP?
溺水的小青蛙 发表于 2 年前
想问一下,WebSocket是应用层协议,建立的时候会多走一次http请求,但是之后发送数据也是直接通过tcp传输,
我看我们购买的源码里是直接使用socket的,但是要自己处理半包问题,如果直接使用websocket的话,也可以在连接建立的时候对身份做一些验证,就不需要通过消息的形式验证身份了,
与直接使用Socket自己去封装协议,两者的处理效率差异大吗?
JackJiang 发表于 5 年前
引用:605682883 发表于 2018-10-25 18:54
看的不是很懂,还是很大收获

哪里不懂?
605682883 发表于 5 年前
看的不是很懂,还是很大收获
一devps 发表于 6 年前
vincentfutux 发表于 6 年前
这篇文章正是我想要的,大赞!
clark.li 发表于 6 年前
WebSocket如果能像http这样被用的这么极致,估计Web应用在某些方面会更牛逼,期待!

返回顶部