客户端发消息思路分析|学习笔记

简介: 快速学习客户端发消息思路分析

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:客户端发消息思路分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9820


客户端发消息思路分析

 

一、 海量用户即时通讯系统

实现功能:完成登录用可以群聊。群聊的功能分为两个步骤完成。

(1) 步骤1:当一个用户上线后,可以将群聊消息发给服务器,服务器可以接收到。

此时已经进入 server.go 的界面,当输入2时希望可以提示需要说的内容,需要找到server.go的相应位置。

case 2:

fmt.Println(“发送消息”)

服务器收到消息后进行转发,需要新增一个结构体,称为 SmsMes。

SmsMes{

Userid..

UserName..

Content..

}

但是这个结构没有有效利用前面定义完成的结构体。这个消息分为两大块,第一块包括SM发送的内容,第二块包括发送的信息,指发送人的信息以及发送了什么信息。如果是点对点聊,会麻烦一点,因为需要将发送消息的对象指明。

既然如此设计成两个部分

SmsMes{

User

Content…

}

想把消息发送出去,客户端应维护重要连接。若不维护,server.go只能保证读取,但没有保存。

我们应该在model层新建一个称为CurUser的结构体

Model/CurUser

struct{

Conn

User…

}

//短消息结构体

Type SmsMes struct{message/message.go

User User ‘json:”user”’

Content string ‘json:”content”’

}

Type CurUser struct{

Message.User //继承

Conn net.Conn ‘json:”con”’

} client/model/curUser.go[新增]

以上两个 user 有区别,上面的 user 信息包含内容,而 cur 则包含连接

当发送信息时,要新建一个专门用于发送消息的处理器,即 smsProcessor,用它管理信息的发送。

Case “”

fmt.Println(“发送信息”)client/server.go

fmt.Println(“请输入你要发送的消息…”)

fmt.Scanf(“%s\n”,R&sms)

smsProcessor := &SmsProcessor{}

smsProcessor.SendSms(sms)

发送之后服务器应正常接收

func (this *Processor) serverProcessMes(msg *me

fmt.Println(“客户端发送的消息=”,msg)

完成客户端可以发送消息的思路:

1. 新增一个消息结构体 SmMes…

2. 新增一个 model CurUser

3. 在 smsProcess.go 增加相应的方法 SendGroupMess 发送一个群聊的消息

相关文章
|
消息中间件 NoSQL 关系型数据库
6年高级开发就因这道题少了5K,Kafka如何避免消息重复消费?
一个6年工作经验的小伙伴,被问到这样一个问题,说Kafka是如何避免消息重复消费的?面试完之后,这位小伙伴来找到我,希望我能给一个思路。今天,我给大家分享一下我的思路。
157 1
|
4月前
|
消息中间件 Java 物联网
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
|
6月前
|
存储 SQL 关系型数据库
Python实现给qq自动发消息 终于有人来和我说早安晚安了吗...
Python实现给qq自动发消息 终于有人来和我说早安晚安了吗...
|
6月前
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
|
前端开发 JavaScript Java
Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
1489 0
Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
|
iOS开发 Python
Python实现微信消息连续发送
Python实现微信消息连续发送
Python实现微信消息连续发送
|
存储 Java
Java网络编程-服务端程序实现
Java网络编程-服务端程序实现
107 0
Java网络编程-服务端程序实现
|
JSON 网络协议 测试技术
客户端发消息代码实现|学习笔记
快速学习客户端发消息代码实现
客户端发消息代码实现|学习笔记
|
NoSQL Redis 开发者
数据类型-案例:微信接收消息顺序控制| 学习笔记
快速学习数据类型-案例:微信接收消息顺序控制
数据类型-案例:微信接收消息顺序控制| 学习笔记