HTML5 SSE webscoket
SSE(server-sent-event)
允许服务端推送数据到客户端。(通常叫数据推送)
是使用的HTTP协议的
wehscoket
简历浏览器与服务器之间的通信渠道,服务器向浏览器推送消息
总的来说,webscoket更为强大和灵活,因为他是全双工通信,可以双向通信。SSE是单向通道,只能服务器向浏览器发送,因为流信息的本质上是下载,如果浏览器向服务器发送信息,就变成了一次http请求了
两者之间的区别
- SSE使用的是http协议,而webscoket本身就是一个独立的协议
- SSE是轻量级的,使用简单,webscoket协议相对复杂
- SSE默认支持断线重连,webscoket需要自己实现
- SSE一般只用于传输文件,二进制数据需要编码再传送,webscoket默认支持二进制数据传输
- SSE支持自定义发送的消息类型
tcp的三次握手四次挥手
三次握手
首先是客户端发送一个请求syn,告诉服务器想要建立tcp通信
服务器收到请求,发现是请求建立tcp通信,就给客户端发送一个syn,表示可以
客户端收到服务器发回的包,发现可以建立连接,就告诉服务器我们之间可以通信即发送一个ack
至此通信建立成功
四次挥手
客户端发送一个fin,告诉服务器要停止传输
服务器就收到后给客户端一个ack,表明知道了(至此只是客户端单方面停止了通信)
服务器再向客户端发送一个fin,告诉客户端要停止传输
客户端收到后发送一个ack,表明知道意图
通信结束
为什么要有三次握手,四次挥手
三次握手是为了确保通信建立,确保双方的机制正常,发送特定的包,确保建立的是tcp连接,
四次挥手是为了保证通信双方都结束,就像打电话,只有双方都明确要结束,才能结束,若是一方想结束,另一方可继续讲话,所以需要四次