其中websocket是为B/S框架所用的,就是可以保持长连接通信,如果是C/S 完全可以用socket搞定,其实websocket也就是上来用http的现有协议连接一下彼此,然后之后的通信就是socket的了(至少server端是这样,browse端的js的实现就不知道了)


websocket建立时使用http协议报文 client发:

server端回复:

连接建立后就与http没什么关系了,可以从websocket报文结构中看出

websocket 报文:它是基于tcp协议的报文,以下是websocket的报文部分,可以看到与http没什么关系了

websocket保持连接的报文(ping pong),从测试来看,都是server端ping,client端pong

websocket端口报文:


golang的websocket的库是从服务器到客户端 定时会有websocket ping 然后客户端到服务器会回应websocket pong

java的websocket没有ping pong,只是靠tcp keepalive 维持长连接