websocket是什么?
WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是:WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。
相对于传统HTTP每次请求-应答都需要客户端与服务端建立连接的模式,WebSocket是类似Socket的TCP长连接通讯模式。一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端中断连接前,不需要客户端和服务端重新发起连接请求。
websocket应用场景:
1、即时通信。比如QQ,微信这些。
2、站内消息推送,比如打开qq时会提示xx用户已上线之类在app或者网站内部的消息。
3、实时数据获取。比如地理位置,用户是否在线等需要实时获取的消息。
4、解决http长轮询消耗服务器资源问题。
首先安装websocket库:
go get github.com/gorilla/websocket
举一个最基本的例子:
var upGrader = websocket.Upgrader{
CheckOrigin: func(r *http.Reque