WebSocket与Http、Socket的区别和联系
WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。
WebSocket与HTTP的关系
相同点
- 都是一样基于TCP的,都是可靠性传输协议。
- 都是应用层协议。
不同点
- WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。
- WebSocket是需要握手进行建立连接的。
联系
WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的
WebSocket与Socket的关系
Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,
它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket是传输控制层协议,WebSocket是应用层协议。
短连接与长连接
短连接
连接——>传输数据——>关闭连接
HTTP是无状态的,浏览器和服务器每进行一次通信,就建立一次连接,但通信结束就中断连接,这就是短连接。
也可以这样说:短连接是指socket连接后,发送接收完数据后马上断开连接。
无状态的意思是:HTTP协议不具备保存之前发送过的请求或响应的功能。每次的请求是相互独立的,第n次的请求结果和第n-1次、第n+1次的请求结果不会互相影响,服务器也不会保存客户端的状态,客户端必须每次带上自己的状态去请求服务器。
长连接
连接——>传输数据——>保持连接——>传输数据——>......——>直到某一方关闭连接(一般是客户端关闭连接)
基于WebSocket实现服务端和客户端长连接
设计思路
关键代码实现
参考
1、https://blog.csdn.net/wwd0501/article/details/54582912
2、https://www.jianshu.com/p/c9017df96869