Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flowers-bloom/uim-server
uim 是基于 udp 协议通信的 im 应用项目。
https://github.com/flowers-bloom/uim-server
Last synced: about 1 month ago
JSON representation
uim 是基于 udp 协议通信的 im 应用项目。
- Host: GitHub
- URL: https://github.com/flowers-bloom/uim-server
- Owner: flowers-bloom
- License: mit
- Created: 2022-05-14T13:05:10.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-05-28T15:34:27.000Z (over 2 years ago)
- Last Synced: 2024-05-27T21:28:15.003Z (8 months ago)
- Language: Java
- Size: 313 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# uim
uim 是基于 udp 协议通信的 im 项目,当前为服务端部分。其中,整个应用是基于 netty 框架进行搭建,目前主要完成的功能有:
- 客户端和服务端通信
- 客户端和服务端建立心跳连接,服务端存储客户端在线状态- udp 丢包问题处理
## 报文格式
```text
1.serialNumber(long) 报文序号
2.command(byte) 报文类型
3.content(byte[]) 报文内容
```## 丢包问题处理思路
消息发送流程:
1.发送者向服务端发送消息,如果接收 ACK 报文超时,则会重发三次,三次仍不成功,则发送失败;
2.服务端接收到发送者消息后,会将消息转发给接收者。直到接收者收到消息返回 CONFIRM 报文后,才会向发送者发送 ACK 报文。
3.接收者收到服务端消息后,会立刻返回 CONFIRM 报文。
以上流程中,即使步骤2,3发生报文丢失情况,最终结果只会是发送者重发消息,不影响整个流程的一致性逻辑。
## 如何使用
1.运行服务端
![服务端启动日志](https://pic.imgdb.cn/item/6280bb4b09475431293554c0.png)
2.运行客户端
(1)客户端1
![客户端1连接和发送消息日志](https://pic.imgdb.cn/item/6280b9a109475431292f7632.png)
(2)客户端2
![客户端2连接和发送消息日志](https://pic.imgdb.cn/item/6280bb5f0947543129359ef7.png)