socket和websocket的区别

如题所述

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

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

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

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

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

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

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

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

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

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

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

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

温馨提示:答案为网友推荐,仅供参考