I would that my life remain a tear and a smile.
我宁愿生活里有眼泪也有微笑。
1、websocket 简介
它的名字总让我们跟socket联系在一起,让我们怀疑它的功能类似于socket(套接字),但是,这种猜测是错误的哦。
socket:是一组调用TCP/IP网络的接口,可以理解为灯泡的插座,应用程序插入一个套接字里面,就可以通信啦。
websocket:是应用层协议,功能类似于http协议,都是负责组装数据,再通过tcp/ip协议传输。
那么跟http协议最大的区别就是: 不仅仅是请求-响应的默认,服务端也可以主动推送,而不需要轮询,实现了浏览器与服务器的全双工通信。
2、websocket 原理
http响应模型websocket响应模型
可以看出,http每一次请求-响应建立一个连接并关闭;而websocket只需要建立一次连接,便可进行多次请求-响应及主动推送,最后关闭连接。
3、go语言实现
在go官方sdk中,并不包含websocket的支持,需要引入第三方包的支持。选择基本就在 x/net/websocket 和 gorilla/websocket 之间,其中gorilla/websocket更为优秀,稳定性更好,故而选择了gorilla/websocket包进行开发。
但是从零开发,又觉得费时费力,便引入了melody框架,
网友评论