1 Star 1 Fork 0

wwy99 / eim

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

eim

介绍

想搞个简单的im项目

[√]:已完成 [-]:开发中 [*]:规划中
0.1.x :
    * [√] 基础通信功能:socket、websocket支持   
    * [√] 发送消息、接收消息
    * [√] web client demo
    * [√] java client demo
    * [√] java server sdk
    * [√] spi扩展功能身份校验、消息审核、消息回调
    * [√] rmi扩展功能远程调用,支持: 身份校验、消息审核、消息回调
    
0.2.x :
    1.  [*] 集群支持,方便进行性能水平扩展

软件架构

eim-architecture

*   netty         4.1.50.Final
*   protostuff    1.6.1
*   sl4j          1.7.25
*   logback       1.2.3
*   fastjson      1.2.62

工作流程

  1. 客户端与服务端socket端口建立连接
  2. 客户端与服务端连接建立成功之后第一条消息应是自己点身份信息消息,待服务器验证通过,否则消息不能被正确投递到指定接收客户端
  3. 验证过程: 收到验证消息 -> 身份验证处理器(*) -> 通过-加入连接管理池 -> 不通过-关闭连接
  4. 发送消息: 服务器收到消息 -> 流解码(*) -> 消息解码(*) -> 消息处理器 -> 消息验证处理器(*) -> 通过-投递消息 -> 不通过-抛弃消息并回调通知
  5. 消息投递,消息发送结果根据是否有回调函数进行通知,或默认回调通知
  6. 服务器主动发送消息需要通过sdk的rmi或spi进行,并且消息不会被验证,成功和失败根据是否有回调函数进行通知,或默认回调通知
  • 身份验证处理器,默认spi实现直接通过,根据配置文件可以进行扩展方式配置(spi/rmi),但是需要自行实现接口
  • 消息验证处理器,同上
  • 消息解码,系统会进行默认消息结构解码,内容字段如果加密或编码需要业务自行解码
  • 流解码,系统底层已实现

安装教程

  1. 安装jdk
  2. 打包项目
  3. 运行

使用说明

  1. 目前已经实现了0.1版本所列功能
  2. 消息加密可以自行通过将加密数据放在MsgDto.content中,或者使用ssl/tsl加密,websocket也可以使用ssl/tsl加密,但是前端websocket由于本人不是很了解,暂未测试,在java中模拟websocket加载ssl/tsl证书可以进行通信*
  3. 有问题可以邮件我(a8542084@163.com)或提到issues,有时间我会尽快回复!

【解决wss加密问题】 client =》(wss) nginx => (ws) server 我们公司的一个项目,因为小程序不支持ws协议(必须使用https),所以采用nginx和client做wss通信,nginx代理转成ws协议,这样就解决了wss加密问题。

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

节点

  1. test websocket <=> websocket test-ws-ws-20200911
  2. test socket <=> websocket test-socket-websocket
MIT License Copyright (c) 2020 wwy99 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

想做个简单开箱即用的im项目 展开 收起
Java 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/wwyNo99/eim.git
git@gitee.com:wwyNo99/eim.git
wwyNo99
eim
eim
master

搜索帮助