1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Lihangjun-nim

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

nim

实时消息推送服务

code style

码云地址:https://gitee.com/Lihangjun/nim.git

项目介绍

qq:1185192813 邮箱:1185192813@qq.com

NIM项目是基于netty的实时消息推送系统,NIM已完成服务端1.0,其客户端web,Android,ios,flutter的SDK将在不久发布。 目前NIM服务端使用springboot搭建,NIM主要具备如下特点:

  • 集群扩展:nim支持横向扩展,更具自身需要,可任意增加服务数量
  • http消息发送:客户端通过API接口发送消息,方便权限控制且通过发布服务接口与其它系统集成
  • 消息持久化:使用mongodb进行持久化(也可自己实现持久化),持久化推送消息以及用户组信息
  • 推送监听:暂支持双通道(redis 订阅/rocketMQ)监听消息,保证消息推送及时性与可达性,使用者也可扩展以及选择监听模式,默认使用redis 订阅消息
  • 多模式推送:支持广播,组播和单播模式
  • 管理与监控(暂未完成):提供对nim连接的监控与管理(包括集群环境),且支持消息管理与拦截发送

架构设计图


使用说明

  1. 根据自身环境修改配置文件application.yml。例如mongo,redis,rocketMQ的配置
  2. netty服务与web服务端口不同,使用者可修改server/xxxxServer.java文件中的port和path来指定连接路径
    @ServerEndpoint(port = "8181", path = "/v1/im/broadcast")
  3. 集群部署可结合nginx代理提供统一连接地址
  4. 消息格式说明:
UNICAST("单播", 1),
MULTICAST("组播", 2),
BROADCAST("广播", 3);
TEXT("文本", 1),
IMAGE("图片", 2),
VOICE("声音", 3),
VIDEO("视频", 4);
AUTH("鉴权", 1),
HANDSHAKE("握手", 2),
HEARTBEAT("心跳", 3),
EXIT("离线", 4),
CLOSE("强制下线", 5),
CHAT("聊天", 6);
/**
 * 消息标识id
 */
private String messageId;
/**
 * 消息时间戳
 */
private Long timestamp;
/**
 * 来源用户id
 */
private String fromUserId;
/**
 * 目标用户id
 */
private String toUserId;
/**
 * 用户组id
 */
private String toGroupId;
/**
 * 数据类型
 */
private Integer mineType;
/**
 * 聊天类型
 */
private Integer chatType;
/**
 * 消息类型
 */
private Integer msgType;
/**
 * 消息标志
 */
private String flag;
/**
 * 消息内容
 */
private String content;
/**
 * 携带数据
 */
private Object extras;

使用示例

design/wobsocket.html提供了web连接测试页面,连接成功后根据api接口发送消息。

  • 发送广播消息
请求地址:http://127.0.0.1:8080/api/v1/common/send
请求头:Content-Type = application/json
请求方法:POST
请求参数:
    {
        "content": "hello,有人吗",
        "extras": null
    }
  • 发送组播消息
请求地址:http://127.0.0.1:8080/v1/im/send
请求头:Content-Type = application/json
请求方法:POST
注意:fromUserId本应在用户鉴权信息中解析而得,这里为了方便测试,由使用者自己设置,如需要使用者可自己添加接口权限控制
请求参数:
    {
        "fromUserId": "123456",
        "content": "hello,有人吗",
        "toGroupId": "11111",
        "extras": null
    }
  • 发送单播消息
请求地址:http://127.0.0.1:8080/v1/im/send
请求头:Content-Type = application/json
请求方法:POST
注意:fromUserId本应在用户鉴权信息中解析而得,这里为了方便测试,由使用者自己设置,如需要使用者可自己添加接口权限控制。若消息发送目标有多个特定用户,可以逗号分隔多个用户id传参
请求参数:
    {
        "fromUserId": "123456",
        "content": "hello,有人吗",
        "toUserId": "1111,2222,3333",
        "extras": null
    }
  • 获取netty服务连接信息
请求地址:http://127.0.0.1:8080/v1/api/count
请求头:Content-Type = application/json
请求方法:GET
响应示例:{"flag":true,"code":2000,"message":"success","data":"广播用户数:0,单播用户数:0,组播用户数:0"}
  • 连接netty服务
广播连接地址:ws://192.168.1.21:8181/v1/im/broadcast
广播连接示例:ws://192.168.1.21:8181/v1/im/broadcast

组播连接地址:ws://192.168.1.21:8181/v1/im/multicast/{userId}/{groupId}
组播连接示例:ws://192.168.1.21:8181/v1/im/multicast/123456/1111

单播连接地址:ws://192.168.1.21:8181/v1/im/unicast/{userId}
单播连接示例:ws://192.168.1.21:8181/v1/im/unicast/123456

下一步计划

  1. 发布SDK及其文档
  2. 提供netty服务监控
  3. 提供容器化一键部署脚本
  4. 增强可扩展性和灵活性
  5. 降低耦合性,提供独立的im中间件以及二次开发接口
  6. 提供更加灵活的配置,使用者根据自己选择组装im服务(多种持久化方案,多种监听通道,多种网络通信服务模式等)

开源许可协议

Apache License 2.0

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

NIM проект — это система для отправки сообщений в реальном времени, основанная на netty. Она поддерживает расширение кластера, отправку http-сообщений, сохранение сообщений, прослушивание отправки, мультимодальную отправку, а также управление и мониторинг. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Lihangjun-nim.git
git@api.gitlife.ru:oschina-mirror/Lihangjun-nim.git
oschina-mirror
Lihangjun-nim
Lihangjun-nim
master