courier-信使 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
courier-信使 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
courier-信使 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 飘逸的刘海
适用人群 未知
收录时间 2022-07-15

软件简介

信使是一个简洁的 IM。核心目标: 完成单机10W+的可用项目(目前实现网页端和electron实现的Win端)

技术栈

核心Tio,包括http和socket都是tio.没有引入spring系列,所以大部分的内容都需要自己封装,好处是启动快,体积小。弊端就是方方面面都需要自己考虑。从登录开始所有的交互全部使用socket,除minio分片上传使用了http外,目前没有其他使用http的地方。 文件存储使用了minio, 缓存使用mangodb, 同时解决缓存和数据存储的问题(据说挺快的,没有做大量尝试)

使用

运行ImServer下Main方法

打包

运行 mvn clean package 拷贝Target下 Im-Server目录 Windows下执行startup.bat方法,Linux执行startup.sh

🤣蓝图

在线文档

🎉前端UI

目前有一些初略的想法,基于electron和web实现,已有一些雏形,但短期目标还是集中在实现功能上面

安装教程

教程来自windows docker, linux同理

  1. 安装minio
docker run -d -p 9000:9000 -p 9001:9001 --name minio -v /home/minio/data:/data -v /home/minio/cert:/root/.minio -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" --restart=always quay.io/minio/minio server /data --console-address ":9001"
 
  1. 安装MongoDB
docker run --name mongo --restart=always -p 27017:27017 -v /home/mongodb:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=密码  -d mongo:latest mongod --auth
 
  1. 安装nginx, 作者使用nginxWebui
# Linux
docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --privileged=true --restart=always --net=host cym1102/nginxwebui:latest

# Windows
docker run -itd -p 8080:8080 -p 8888:8888 -v E:/docker/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --privileged=true  cym1102/nginxwebui:latest
 
  1. 配置minio https访问(此处以自签名为例)下载签名工具 签名工具

使用公网证书可忽略生成的步骤,直接讲证书放进去即可

# 172.17.0.3 是docker minio内部IP, 需要特别注意这个IP在映射出端口的情况下必须写
certgen-windows-amd64.exe -ecdsa-curve P256 -host 127.0.0.1,localhost,172.17.0.3,192.168.0.103
 

放置于

抛出的 E:/docker/minio/cert 目录下,完整目录为 E:/docker/minio/cert/certs 重启容器

  1. 配置JDK证书信任,否则会抛出下列错误
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314)
 

在JDK bin目录下运行

.\keytool -import -alias sslServer_03 -file D:\key\新建文件夹\public.crt -keystore ..\lib\security\cacerts -storepass changeit -v
 
  1. 配置nginx
# 参考配置如下
http {
  include mime.types;
  default_type application/octet-stream;
  keepalive_timeout 75s;
  gzip on;
  gzip_min_length 4k;
  gzip_comp_level 4;
  client_max_body_size 1024m;
  client_header_buffer_size 32k;
  client_body_buffer_size 8m;
  server_names_hash_bucket_size 512;
  proxy_headers_hash_max_size 51200;
  proxy_headers_hash_bucket_size 6400;
  gzip_types application/javascript application/x-javascript text/javascript text/css application/json application/xml;
  error_log /home/nginxWebUI/log/error.log;
  map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
  }
  access_log /home/nginxWebUI/log/access.log;
  server {
    listen 8888 ssl http2;
    ssl_certificate /home/nginxWebUI/cert/public.crt;
    ssl_certificate_key /home/nginxWebUI/cert/private.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    location / {
      proxy_pass http://192.168.0.103:8081;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
    location /ws {
      proxy_pass http://192.168.0.103:9326;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
    location /api/ {
      proxy_pass http://192.168.0.103:8088/;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /courier/ {
      proxy_pass https://192.168.0.103:9000/courier/;
      proxy_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      chunked_transfer_encoding off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
    }
  }
}

 

 

 

# 0.0.1 版本关键特性

  • 单聊群聊
  • 消息状态
  • 用户在线状态
  • 一对一音视频通话
  • 语音消息
  • 表情
  • @成员
  • 消息引用
  • 管理员
  • 客户端增量全量更新
  • 客户端下载记录
  • 消息搜索
  • 消息撤回
  • ......

演示地址

文档地址: https://www.o0o0oo.com/

演示地址: https://chat.o0o0oo.com/

前端地址:https://gitee.com/LiLongLong719/im-web

演示账号 a/a 仅演示目的.服务器的内容不定期清理

展示截图

 

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(1) 发布并加入讨论🔥
发表了资讯
2022/09/16 11:59

courier - 信使 V0.0.8 更新,开源即时通讯工具性能测试结果出炉

信使 简洁轻量的即时通讯工具 😯 演示地址 (万水千山都是情,点个 Star 行不行) 文档地址: https://www.o0o0oo.com/ 演示地址: https://chat.o0o0oo.com/ 前端地址:https://gitee.com/LiLongLong719/im-web 演示账号 a/a 仅演示目的。服务器的内容不定期清理 (作者叫礼貌,可以找我聊天哦) 0.0.8 无功能更新. 性能测试结果地址: 前端地址:性能测试-2022年9月12日 | Courier (o0o0oo.com)...

1
10
发表了资讯
2022/08/26 10:08

courier-信使 V0.0.7 更新 开源即时通讯工具

> 寻找志同道合的伙伴, 有意向请通过主页联系作者 信使 简洁轻量的即时通讯工具 😯 演示地址 (万水千山都是情,点个 Star 行不行) 文档地址: https://www.o0o0oo.com/ 演示地址: https://chat.o0o0oo.com/ 前端地址:https://gitee.com/LiLongLong719/im-web 演示账号 a/a 仅演示目的。服务器的内容不定期清理 (作者叫礼貌,可以找我聊天哦) v0.0.7 ⚡ 群公告 功能 🐞 设置群成员公开后未同步到其他成员的问题 ...

0
9
发表了资讯
2022/08/19 09:17

courier - 信使 V0.0.6 发布,开源即时通讯工具

> 寻找志同道合的伙伴, 有意向请通过主页联系作者 信使 简洁轻量的即时通讯工具 😯 演示地址 (万水千山都是情,点个 Star 行不行) 文档地址: https://www.o0o0oo.com/ 演示地址: https://chat.o0o0oo.com/ 前端地址:https://gitee.com/LiLongLong719/im-web 演示账号 a/a 仅演示目的。服务器的内容不定期清理 (作者叫礼貌,可以找我聊天哦) v0.0.6 ⚡ 忘记密码功能 ⚡ 会话置顶功能 ⚡ 表情联想功能上线,可以输...

0
10
发表了资讯
2022/08/12 09:44

courier - 信使 V0.0.5 发布,开源即时通讯工具

信使 简洁轻量的即时通讯工具 😯 演示地址 (万水千山都是情,点个 Star 行不行) 文档地址: https://www.o0o0oo.com/ 演示地址: https://chat.o0o0oo.com/ 前端地址:https://gitee.com/LiLongLong719/im-web 演示账号 a/a 仅演示目的。服务器的内容不定期清理 (作者叫礼貌,可以找我聊天哦) ⚡ 群组可设置群公开,公开后可以通过群组搜索加入 ⚡ 修改密码功能上线 ⚡ 支持视频通话设备测试 😁 入群提示,显示...

0
14
发表了资讯
2022/08/05 09:44

courier-信使 V0.0.4 发布,开源即时通讯工具

信使 简洁轻量的即时通讯工具 😯 演示地址 (万水千山都是情,点个 Star 行不行) 文档地址: https://www.o0o0oo.com/ 演示地址: https://chat.o0o0oo.com/ 前端地址:https://gitee.com/LiLongLong719/im-web 演示账号 a/a 仅演示目的。服务器的内容不定期清理 (作者叫礼貌,可以找我聊天哦) ⚡ 桌面端悬浮托盘支持查看简要信息啦,大概是酱紫 ⚡ 桌面端支持设置开机自启 ⚡ 桌面端支持Ctrl + d 快速关闭聊天窗口 ...

4
12
发表了资讯
2022/07/29 09:08

开源即时通讯工具 Courier-信使 V0.0.3 发布,新增表情包功能

信使 简洁轻量的即时通讯工具 😯 演示地址(万水千山都是情,点个Star行不行) 文档地址: https://www.o0o0oo.com/ 演示地址: https://chat.o0o0oo.com/ 前端地址:https://gitee.com/LiLongLong719/im-web 演示账号 a/a 仅演示目的.服务器的内容不定期清理(作者叫礼貌,可以找我聊天哦) v0.0.3 ⚡ 简单画了个LOGO,各方面都统一啦 ⚡ 表情包功能(还有一些想法没有实现) 🐞 特殊情况下可以建同一好友的问题 :beetl...

0
18
发表了资讯
2022/07/22 10:02

Courier-信使 V0.0.2 发布

文档地址: [https://www.o0o0oo.com/](https://www.o0o0oo.com/) 演示地址: [https://chat.o0o0oo.com/](https://chat.o0o0oo.com/) 前端地址:[https://gitee.com/LiLongLong719/im-web](https://gitee.com/LiLongLong719/im-web) 演示账号 a/a 仅演示目的.服务器的内容不定期清理 版本特性: - ⚡ 创建群组,添加会话,拉人入群交互优化 - ⚡ 消息转发功能 - ⚡ 修改群信息发送修改消息 - 😁 人员...

0
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
1 评论
36 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部