Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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 应用项目。

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)