Go语言实现长连接并发框架 - 消息

server/2024/10/9 0:57:42/

文章目录

  • 前言
  • 接口
  • 结构体
  • 接口实现
  • 项目地址
  • 最后

前言

你好,我是醉墨居士,上篇博客实现了对连接的封装,那我们对连接的读写操作涉及数据格式的定义,我们采用统一的数据格式。使用我们这种数据格式的数据,我们将其称之为消息

接口

trait/message.go

type Message interface {ID() uint16DataLen() uint16Data() []byteSetID(uint16)SetDataLen(uint16)SetData([]byte)
}

结构体

gpack/message.go

// Message 业务消息
type Message struct {//消息IDid uint16//消息的长度dataLen uint16//消息的内容data []byte
}// 创建一个message
func NewMessage(id uint16, data []byte) *Message {return &Message{id:      id,dataLen: uint16(len(data)),data:    data,}
}

接口实现

gpack/message.go

// ID 返回消息ID
func (m *Message) ID() uint16 {return m.id
}// DataLen 返回消息体的长度
func (m *Message) DataLen() uint16 {return m.dataLen
}// Data 返回消息的内容
func (m *Message) Data() []byte {return m.data
}// SetID 设置消息ID
func (m *Message) SetID(id uint16) {m.id = id
}// SetDataLen 设置消息体的长度
func (m *Message) SetDataLen(dataLen uint16) {m.dataLen = dataLen
}// SetData 设置消息的内容
func (m *Message) SetData(data []byte) {m.data = data
}

项目地址

Github:https://github.com/zm50/gte
Giee:https://gitee.com/zm50/gte

最后

我是醉墨居士,我们完成了框架内部连接中的数据传输中数据格式的消息定义,后续我们可以基于这个消息进行相关连接数据读取,消息封装,消息分发等步骤的处理


http://www.ppmy.cn/server/129009.html

相关文章

17 链表——21. 合并两个有序链表 ★

17 链表 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 算法设计: 合并两个有序链表,并保持有序性,可以采用迭代法和递归法两种…

学生家长必备,中小学课本教材电子书批量下载工具

今天再整理更新几个最新的电子书教材网站和下载工具 苏生不惑备用号,分享各种黑科技软件资源和技巧,带你玩转互联网。 首先还是国家中小学智慧教育平台这个网站 https://basic.smartedu.cn/elecEdu 还有在线电子教材网站 http://www.haoduoyun.cc/ …

专栏十九:单细胞大数据时代使用scvi和scanpy整合数据

慢更ing,主要是记录自己在分析中的一些困惑 一、基础知识和解惑 放在最前面,是因为scvi整合不像harmony,傻瓜式操作,很多地方还是要注意一下的。 1.如何正确的寻找HVGs 一般我们使用的函数就是scanpy.pp.highly_variable_genes,里面的参数较为复杂。 Expects logarit…

Windows系统编程(三)线程并发

进程与线程 进程:直观的说就是任务管理器中各种正在运行的程序。对于操作系统来说,进程仅仅是一个数据结构,并不会真实的执行代码 线程:通常被称作但并不真的是轻量级进程或实际工作中的进程,它会真实的执行代码。每…

腾讯云服务器上使用Nginx部署的静态网站打开速度慢的原因分析及优化解决方案

目录 前言1. 网站打开速度慢的原因分析1.1 服务器配置不足1.2 网络延迟1.3 Nginx配置不合理1.4 静态资源未优化 2. 网站速度的测试与分析2.1 使用浏览器开发者工具分析2.2 在线工具测试 3. 网站优化的具体方法3.1 服务器配置优化3.2 CDN加速与DNS优化3.3 优化Nginx配置3.3.1 启…

【C++打怪之路Lv7】-- 模板初阶

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

【C++ 11】nullptr 空指针

文章目录 【 0. 问题背景 】0.1 野指针和悬空指针0.2 传统空指针 NULL0.3 传统空指针的局限性 【 1. 基本用法 】【 2. nullptr 的应用 】2.1 nullptr 解决 NULL 的遗留BUG2.2 简单实例 【 0. 问题背景 】 0.1 野指针和悬空指针 总结 野指针悬空指针产生原因指针变量未被初始…

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中,是一定会遇到表关联查询的。当两张大表关联时,时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合:SC_DATA(学生基本信息集合&…