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

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

开发者学堂课程【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 发送一个群聊的消息

相关文章
|
Web App开发 缓存 网络协议
如何实现服务端向客户端推送数据
常见的http协议只能从客户端主动向服务端请求数据,而服务端无法向客户端发送数据.本文通过介绍几种方式来实现上述功能.
|
9月前
|
消息中间件 JavaScript 物联网
MQTT常见问题之用rocketmq mqttdemo的MqttConsumer始终无法接收到消息如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
9月前
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
|
小程序
小程序订阅消息推送简要流程图
小程序订阅消息推送简要流程图
135 0
小程序订阅消息推送简要流程图
|
前端开发 JavaScript Java
Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
1604 0
Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
|
前端开发 NoSQL Redis
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
136 0
|
运维 测试技术
【超干货】近期收到的测试面试题分析
【超干货】近期收到的测试面试题分析
|
存储 消息中间件 NoSQL
一口气说出 6 种实现延时消息的方案,还有谁不会?!
一口气说出 6 种实现延时消息的方案,还有谁不会?!
|
NoSQL Redis 开发者
数据类型-案例:微信接收消息顺序控制| 学习笔记
快速学习数据类型-案例:微信接收消息顺序控制
数据类型-案例:微信接收消息顺序控制| 学习笔记
|
JSON 网络协议 测试技术
客户端发消息代码实现|学习笔记
快速学习客户端发消息代码实现
客户端发消息代码实现|学习笔记