github.com/glide-im/glide@v1.6.0/docs/documents.md (about)

     1  
     2  
     3  - [go 实现的一个简单客户端](https://github.com/glide-im/glide_cli)
     4  
     5  本项目是 glide 的单体服务实现, 包含了长连接网关, 群聊功能, 并提供了管理长连接及群聊的接口客户端.
     6  
     7  本项目依赖 `glide`, 关于 `glide` 更多信息请查看此项目文档.
     8  
     9  `internal` 包中为本项目的业务实现, `pkg` 包中为提供给外部系统的接口及 rpc 客户端实现.
    10  
    11  `im-service` 需要配合接口项目 `api` 使用, 本项目只提供长连接的消息收发, 登录鉴权等需要通过 `api` 实现, `api` 通过 本项目提供的 rpc 接口进行交互, 例如给指定用户设置 id,
    12  给指定id用户推送消息, 断开指定链接, 判断用户是否在线等.
    13  
    14  本项目需要在消息收发时保存消息, 且消息直接通过 mysql 持久化, 离线消息通过 redis 保存.
    15  
    16  ## 简单介绍
    17  
    18  > 2022年9月22日17:49:47
    19  
    20  这个项目是一个单体聊天服务器, 包含群聊和单聊功能, 启用聊天历史(StoreMessageHistory.StoreMessageHistory=true)的情况下需要依赖 mysql, 启用离线(
    21  StoreMessageHistory.StoreOfflineMessage=true)则还需要 redis, 如果关闭离线和历史消息则不要要配置也可运行, 配置文件中的 [Redis] 和 [MySql] 不需要配置即可.
    22  
    23  客户端连接到服务后, 会收到一条 `Action` 为 `hello` 的消息, 里面包含了一些配置的一个临时 id 用来标记当前客户端, 这个 id 在每次连接到服务时都不一样.
    24  
    25  如果客户端需要登录, 鉴权, 需要发送 `Action` 为 `api.auth` 消息进行鉴权, 具体协议查看源码. 鉴权后一个连接即会绑定一个用户id `uid`, 设备 id `device`, 鉴权 token 类型为 jwt.
    26  
    27  聊天服务不提供用户, 用户关系, 群等管理功能, 只处理消息转发和消息保存等和消息推送转发流程相关业务, 其他功能在 http 接口项目 `api` 中有具体的实现及演示.
    28  
    29  客户端鉴权, 管理等功能通过 HTTP API 实现, 后端 HTTP 服务再通过 `im_service` 提供的 RPC 接口进行踢人, 推送消息, 管理群等功能, 项目根目录下 `pkg` 包中列出了所有聊天服务提供的接口 及 rpc
    30  客户端实现, 外围管理服务直接依赖本项目, 再通过 pkg 中的 rpc 客户端即可对聊天服务管理.
    31  
    32  ## 运行
    33  
    34  > 2022年9月28日17:48:30
    35  
    36  - [配置文件](../config/config.toml)
    37  - [程序入口](../cmd/im_service/main.go)
    38  - [如何调用本服务提供的RPC接口](../example/client/rpc_client_example.go)
    39  
    40  ## 测试一下发消息
    41  
    42  > 2022年9月28日17:37:46
    43  
    44  为了方便测试发消息等服务端的流程, 可以使用用 go 实现的一个简单客户端 [glide-cli](https://github.com/glide-im/glide_cli) 进行消息收发.
    45  `glide_cli` 中 `example` 目录中有一个简单的例子发消息, 使用时只需要将 jwt 的 secret 配置与 `im_service` 一致即可, uid 可以随意填, 这样就免去了麻烦 API 鉴权过程,
    46  只需要运行一个 `im_service` 即可进行消息收发的测试.