首页 > 其他分享 >Go Websocket库推荐

Go Websocket库推荐

时间:2024-01-15 21:24:15浏览次数:41  
标签:Websocket socket 推荐 ClientEventHandler gws Go func Conn

gws常用的操作

json格式参考 home assiatant文档中的那个定义:
ha websocket文档

定义handler, 它是gws的websocket的回调方法集合定义的接口

// ClientEventHandler 是 Websocket事件回调的模板.  
// 有 open, close, ping, pong(客户端其实没有ping操作, 所以就自然不存在pong的回调), message  
type ClientEventHandler struct{}  
  
func (b ClientEventHandler) OnOpen(socket *gws.Conn) {  
  
}  
  
func (b ClientEventHandler) OnClose(socket *gws.Conn, err error) {  
    fmt.Printf("%v关闭连接", socket.RemoteAddr())  
}  
  
func (b ClientEventHandler) OnPing(socket *gws.Conn, payload []byte) { _ = socket.WritePong(nil) }  
  
func (b ClientEventHandler) OnPong(socket *gws.Conn, payload []byte) {}  
  
func (b ClientEventHandler) OnMessage(socket *gws.Conn, message *gws.Message) {  
  
}

建立客户端连接, 并设置超时时间:

client, response, err := gws.NewClient(ws.ClientEventHandler{}, &gws.ClientOption{HandshakeTimeout: 2 * time.Second})

msg到来的流程:
解析msg中的type字段, 并将data数据传递给对应的函数:
对应的函数解析data数据, 传递给实际运行的函数, 并等待结果返回;
定义统一返回的结果对象;

之后再补充;

标签:Websocket,socket,推荐,ClientEventHandler,gws,Go,func,Conn
From: https://www.cnblogs.com/runninginsilence/p/17966357

相关文章

  • 我们公司都用哪些软件?强烈推荐这些
    大家好,我是鱼皮。周末给大家分享一些轻松的干货吧,聊聊我们公司在用的软件,说不定能帮大家提高学习工作效率呢~我把软件分为四大类:团队协作、内容创作、文件共享、效率提升,分别介绍,便于大家选取。团队协作团队协作的两个经典场景是即时通讯和文档协作。我们公司内部的即时通讯软......
  • Django rest_framework用户认证和权限
    完整的代码https://gitee.com/mom925/django-system使用jwt实现用户认证pipinstalldjangorestframework-simplejwt重新定义一下User类classUsers(AbstractUser):classMeta:db_table="system_users"verbose_name="用户表"......
  • Google earth engine(GEE)示例:地形分析
    //导入研究区域varstudyArea:Tableprojects/assets/study_area//导入SRTM地形数据varsrtm=ee.Image('USGS/SRTMGL1_003');//提取研究区域的高程varelevation=srtm.clip(studyArea);//计算坡度varslope=ee.Terrain.slope(elevation);//计算坡向va......
  • Go中的闭包和defer关键字
    闭包基本介绍:闭包就是一个函数和与其相关的引用环境组合的一个整体。packagemainimport"fmt"funcmain(){ //使用AddUpper函数//当反复调用f函数,因为n是初始化一次,因此每调用一次就进行累计。//我们要搞清楚闭包的关键,就是要分析出返回的函数引用到了哪些变......
  • 推荐一个node版本管理工具nvm
    nvm是一款Node.js版本管理工具,允许用户通过命令行快速安装、切换和管理不同的Node.js版本。nvm只适用于macOS和Linux用户的项目,如果是Windows用户,可以使用 nvm-windows 、nodist 或 nvs 替换。安装方式macOS下载方式:#方式1浏览器打开下面链接下载https:/......
  • 精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原
    背景介绍在Java编程中,动态代理的应用非常广泛。它被广泛应用于SpringAOP框架、Hibernate数据查询、测试框架的后端mock、RPC以及Java注解对象获取等领域。静态代理和动态代理与静态代理不同,动态代理的代理关系是在运行时确定的,这使得它在灵活性上更胜一筹。相比之下,静态代理的代理......
  • Dithered golden interleaver 黄金分割伪随机交织器 代码备份
    目录公式来源DitheredgoldeninterleaverTheMatrix-DitheredGoldenInterleavingAlgorithm有错误欢迎指正公式来源DesignofaModifiedInterleavingAlgorithmBasedonGoldenSectionTheoryEnhancingthePerformanceofTurboCodesDitheredgoldeninterleaver(*......
  • Go中init函数和匿名函数
    init函数:每一个源文件中都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是init会在Main函数之前被调用。通常可以在init函数中完成初始化工作。import"fmt"funcmain(){ fmt.Println("main函数")//后输出}funcinit(){ fmt.Println("init方法")......
  • Redis、Memcache和MongoDB的区别
    Redis、Memcache和MongoDB的区别 >>MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为sessionhandle。Memcached的......
  • 开源字符识别 OCR 引擎推荐
    开源字符识别OCR引擎推荐sea​现代支付架构部经理 Tesseract开源OCR引擎(主存储库) github地址 GitHub-tesseract-ocr/tesseract:TesseractOpenSourceOCREngine(mainrepository) 官方网址 Tesseractdocumentation Tesseract......