websocket(websocket的缺点和不足)

http://www.itjxue.com  2023-01-30 14:24  来源:未知  点击次数: 

socket和websocket的区别

socket是TCP/IP进程间通讯的底层实现(当然,socket只是ipc中的一种,此外还有消息队列、信号灯、共享内存等很多手段)。

http(s)是在socket之上封装的一种上层通讯协议,其特点是:

服务端监听通讯,被动提供服务;客户端主动向服务端发起连接请求,建立起通讯。

每一次交互都是:客户端主动发起请求(request),服务端被动应答(response)。

服务端不能主动向客户端推送数据。

通信的数据是基于文本格式的。二进制数据(比如图片等)要利用base64等手段转换为文本后才能传输。

websocket也是在socket之上封装的一种上层通讯协议,其特点是:

websocket通讯的建立阶段是依赖于http协议的。最初的握手阶段是http协议,握手完成后就切换到websocket协议,并完全与http协议脱离了。

建立通讯时,也是由客户端主动发起连接请求,服务端被动监听。

通讯一旦建立连接后,通讯就是“全双工”模式了。也就是说服务端和客户端都能在任何时间自由得发送数据,非常适合服务端要主动推送实时数据的业务场景。

交互模式不再是“请求-应答”模式,完全由开发者自行设计通讯协议。

通信的数据是基于“帧(frame)”的,可以传输文本数据,也可以直接传输二进制数据,效率高。当然,开发者也就要考虑封包、拆包、编号等技术细节。

Websocket在Vue中的使用

为了兼容各个浏览器所以初始化的时候针对不同的浏览器初始化调用不同的方法。

其中CONFIG.WEBSOCKET_URL为wensocket服务地址,_this.userData.user是登录用户的用户名,这样做为了保证不同用户的websocket地址的唯一性,防止消息发生混淆。

?????? 由于网络以及websocket自身的一些不稳定性,页面长时间打开的情况下有时会发生websocket链接的断开,为了防止这种情况,我们增加心跳检测机制

并且在websocket链接建立时触发该方法

?????? 为了保证websocket对象能够及时创建,建议在vue的created的钩子函数中触发websocket的初始化,同时在beforeRouteLeave方法里关闭websocket的链接

源码(复制粘贴即可使用):

websocket 和 socket.io 之间的区别是什么

websocket和socket.io之间的区别为:性质不同、兼容不同、用途不同。

一、性质不同

1、websocket:websocket是一种让客户端和服务器之间能进行双向实时通信的技术。

2、socket.io:socket.io是将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口。

二、兼容不同

1、websocket:在使用websocket时,,虽然主流浏览器都已经支持,但仍然可能有不兼容的情况。

2、socket.io:在使用socket.io时,不用担心兼容问题,底层会自动选用最佳的通信方式。

三、用途不同

1、websocket:websocket适合用于client和基于node搭建的服务端使用。

2、socket.io:socket.io适合进行服务端和客户端双向数据通信。

(责任编辑:IT教学网)

更多