当前位置: 首页 > article >正文

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

文章目录

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

前言

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

接口

trait/message.go

type Message interface {
	ID() uint16
	DataLen() uint16
	Data() []byte

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

结构体

gpack/message.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

// 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.kler.cn/news/339089.html

相关文章:

  • 根据视频id查询播放量
  • ARTS Week 43
  • GO网络编程(一):基础知识
  • 【数据结构】【顺序表算法】 删除特定值
  • 搜索引擎相关的一段实习经历
  • AR智能眼镜之战:Meta vs Snap
  • 探索计算机科学的奥秘:从基础到进阶
  • Py2neo 教程
  • 实施威胁暴露管理、降低网络风险暴露的最佳实践
  • 面向对象技术——设计模式
  • 通过Dockerfile 安装rabbitMq
  • Linux 基础入门操作 - 第5章 基础文件操作
  • C++面试速通宝典——14
  • 每日OJ题_牛客_平方数_数学_C++_Java
  • 【数据管理】DAMA-元数据专题
  • 2024.9.29 问卷数据分析
  • [win7] win7系统的下载及在虚拟机中详细安装过程(附有下载文件)
  • 实战OpenCV之模板匹配
  • kafka-windows集群部署
  • 职场中的人情世故,你懂了多少?