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

文章目录

前言

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

接口

trait/message.go

go 复制代码
type Message interface {
	ID() uint16
	DataLen() uint16
	Data() []byte

	SetID(uint16)
	SetDataLen(uint16)
	SetData([]byte)
}

结构体

gpack/message.go

go 复制代码
// Message 业务消息
type Message struct {
	//消息ID
	id 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

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

最后

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

相关推荐
司南-70496 分钟前
opencode环境搭 并 配置自定义BASE URL
linux·运维·服务器·人工智能
无巧不成书021811 分钟前
Rust开发环境完全指南:Windows/Linux双平台配置与实战
linux·windows·rust·gnu·msvc·mingw-w64安装·镜像配置
froginwe1112 分钟前
Python3 实例
开发语言
xiaoshuaishuai813 分钟前
C# ZLibrary数字资源分发
开发语言·windows·c#
小碗羊肉16 分钟前
【从零开始学Java | 第四十二篇】生产者消费者问题(等待唤醒机制)
java·开发语言
流年如夢16 分钟前
自定义类型进阶:联合与枚举
java·c语言·开发语言·数据结构·数据库·c++·算法
Little At Air20 分钟前
C++stack模拟实现
linux·开发语言·c++·算法
霸道流氓气质29 分钟前
SpringBoot+LangChain4j+Ollama实现Function Calling工具调用-仿智能客服示例
java·spring boot·后端
RoboWizard39 分钟前
移动固态硬盘的耐用性如何,怎么判断使用寿命?
服务器·数据库·负载均衡
Ulyanov41 分钟前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio组件化开发与UI组件库构建
开发语言·python·qt·ui·雷达电子战系统仿真