websocket笔记

65 阅读1分钟

背景

  1. 在一些场景下,需要和服务端保持即时通讯,或由服务端主动推送消息。如: a. 网页在线客服
    b. 获取后台任务的进度
    c. 协同编辑展示合作者的修改 d. 直播
  2. HTTP协议是请求/响应模式,client想要实时获取信息,只能通过轮询的方式。这对网络资源和client/server的计算资源都是一种损耗。
  3. 建立client/server之间的双向通信方式,可以解决此问题。

websocket协议

基于TCP、心跳机制、报文格式

golang-demo

使用第三方库:github.com/gorilla/web…
参考:
www.liuvv.com/p/fae4c74c.… juejin.cn/post/694695…

企业级怎么做

提供一个“长连接中间件”供业务侧接入,包括开放平台、proxy和SDK。 (大概思路,画的不一定准确;实际实现可能还有很多其他的细节)

graph TD
BizClient --HTTP---> clientSDK
clientSDK --Websocket---> Proxy
Proxy --RPC----> BizServer
BizServer --RPC---> Proxy
Proxy --Websocket---> clientSDK