All Projects → IcedSoul → withme3.0

IcedSoul / withme3.0

Licence: MIT license
Using Netty as the server and WebSocket as the communication protocol, the instant messaging system developed by microservice architecture is adopted.

Programming Languages

java
68154 projects - #9 most used programming language
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to withme3.0

Im service
golang im server
Stars: ✭ 1,694 (+2466.67%)
Mutual labels:  instant-messaging
Starrtc Server
免费IM系统,IM即时通信消息系统(含一对一文字聊天,群聊,聊天室),免费一对一voip实时通话,录屏,webrtc服务端,免费直播连麦,互动直播,视频直播,RTSP拉流,RTMP推流,语音对讲,免费在线会议,视频会议等服务端程序,支持物联网平台,✨万水千山总是情,来个star行不行✨
Stars: ✭ 2,295 (+3377.27%)
Mutual labels:  instant-messaging
haskell-ricochet
(WIP/Experimental) Ricochet implementation as Haskell Library.
Stars: ✭ 22 (-66.67%)
Mutual labels:  instant-messaging
Purple Gowhatsapp
Pidgin/libpurple plugin for WhatsApp Web.
Stars: ✭ 125 (+89.39%)
Mutual labels:  instant-messaging
Webapp
Tinode web chat using React
Stars: ✭ 156 (+136.36%)
Mutual labels:  instant-messaging
Tindroid
Tinode chat client application for Android
Stars: ✭ 194 (+193.94%)
Mutual labels:  instant-messaging
Ios
Tinodios: Tinode Messaging Client for iOS
Stars: ✭ 119 (+80.3%)
Mutual labels:  instant-messaging
terraform-openstack-rke2
Deploy Kubernetes on OpenStack with RKE2
Stars: ✭ 38 (-42.42%)
Mutual labels:  kubernetes-deployment
Im server yichat
Stars: ✭ 169 (+156.06%)
Mutual labels:  instant-messaging
django-on-k8s
An end to end tutorial to run a Django Web Application having a PostgreSQL database in Kubernetes
Stars: ✭ 37 (-43.94%)
Mutual labels:  kubernetes-deployment
Chat Ui Kit React
Build your own chat UI with React components in few minutes. Chat UI Kit from chatscope is an open source UI toolkit for developing web chat applications.
Stars: ✭ 131 (+98.48%)
Mutual labels:  instant-messaging
Ezchat
基于网易云信 IM SDK for Android,界面仿造QQ和微信,打造的一款简单的即时通讯 APP,目前可实现好友添加,个人资料修改,基础聊天功能(包括文字,表情,语音,视频,图片和位置信息发送接收功能),Based on Netease cloud letter IM SDK for Android, the interface mimics QQ and WeChat, to create a simple instant messaging APP, which can be realized by adding friends, modifying personal information, basic chatting functions (including text, emoticons, voice, video, Location information send and receive function).
Stars: ✭ 140 (+112.12%)
Mutual labels:  instant-messaging
Fan Push
a simple and small push system for Android and server based on Netty.
Stars: ✭ 238 (+260.61%)
Mutual labels:  instant-messaging
Blabber.im
blabber.im basiert auf Conversations und ist ein Open Source XMPP/Jabber Messenger für Android 4.1+
Stars: ✭ 124 (+87.88%)
Mutual labels:  instant-messaging
kubernetes-starterkit
A launchpad for developers to learn Kubernetes from scratch and deployment of microservices on a kubernetes cluster.
Stars: ✭ 39 (-40.91%)
Mutual labels:  kubernetes-deployment
Tut Android
即时聊天,自带服务器,有朋友圈功能等等
Stars: ✭ 120 (+81.82%)
Mutual labels:  instant-messaging
Gateway
🚀构建分布式即时聊天、消息推送系统。 Building distributed instant messaging, push notification systems.
Stars: ✭ 188 (+184.85%)
Mutual labels:  instant-messaging
cryptalk
HTML5/Node.js based, client side (E2EE) encrypted instant chat
Stars: ✭ 73 (+10.61%)
Mutual labels:  instant-messaging
laravel-chat
chat application build with laravel and gopusher gateway.
Stars: ✭ 32 (-51.52%)
Mutual labels:  instant-messaging
tricks
Run experiments effortlessly on top of Kubernetes
Stars: ✭ 24 (-63.64%)
Mutual labels:  kubernetes-deployment

WithMe3.0

现状

  • 正在开发中,开发笔记可以在我的个人wiki中看到: WithMe 3.0 开发笔记

  • 目前基本单人聊天和群组聊天功能已经正常,后续开发计划正在思考中。

  • 项目相关问题请在issue中提问,提issue时请详细描述场景、问题,给出必要的代码、控制台或者报错截图,感谢您的支持~

  • 如果你对这个项目感兴趣,想要交流IM相关开发经验或者一起造轮子,欢迎加入QQ群 730490237 来一起讨论共同开发2333

运行说明

使用Docker-Compose运行

  1. 安装 Maven, Docker 以及 Docker Compose
  2. 代码clone或者下载到本地后请进入WithMe3.0/ 目录,master分支。
  3. 执行
    mvn clean package -DskipTests
    cd /deployment/docker-compose
    docker-compose build
    docker-compose up
  4. 在浏览器中访问 http://localhost/ 即可访问项目主页面。

部署至Kubernetes集群

前提是有一个至少拥有两个节点且内存充足的Kubernetes集群,关于Kubernetes搭建教程请参考官方文档和博客。

  1. 配置私有Docker镜像仓库或者注册DockerHub账号,打包并上传此项目镜像。

  2. 修改 deployment/kubernetes/deployment中各服务镜像地址为自己的私有镜像仓库或者DockerHub仓库。

  3. 配置 nfs文件共享服务器,并且在共享目录下(/nfs/share)新建如下文件夹

    • group-mysql/data
    • group-message-mysql/data
    • message-mysql/data
    • offline-message-mysql/data
    • user-mysql/data
    • user-relation-mysql/data
    • redis/data

    之后分别修改 /deployment/kubernetes/pv 下各文件夹 spec.nfs.path 为你的共享文件夹名称加上述名称(若为nfs-share则不必修改),同时修改server为你的nfs服务器IP地址。 请注意:确保集群每个Node都安装nfs

  4. 在项目根目录依次执行以下命令:

# 创建pv
kubectl create -f deployment/kubernetes/pv

# 创建pvc
kubectl create -f deployment/kubernetes/pvc

# 创建deployment
kubectl create -f deployment/kubernetes/deployment

# 创建service
kubectl create -f deployment/kubernetes/service
  1. 可在http://[cluster-master-ip]:30001 访问项目主页。

如果不进行前两步操作,则默认从我的DockerHub仓库中拉取镜像,本地修改无法生效。

若集群已存在pv策略,可根据自己集群情况执行第三步的pv配置。

Kubernetes部署初步试运行,后续会有更多相关文档和说明,开发笔记中也会更新踩坑记录。

DockerCompose启动失败原因及解决方法

内存过小

因为项目使用了多个MySQL数据库,如果机器内存过小可能会启动失败。内存较小机器可切换至share-db分支,此分支所有数据库使用同一个MySQL数据库,较小内存机器也可以正常启动。

端口占用

虽然项目在Docker容器中启动,但为了方便和调试已将全部服务端口映射至主机,如果主机对应端口被占用也可能导致启动失败,请检查相关端口是否被占用:

服务名 主机映射端口 容器内端口 可否取消主机端口映射
redis 6379 6379 可以
mysql 3307 ~ 3312 3306 可以
service 21003 ~ 21008 8081 可以
websocket-service 21002 8282 可以
nginx 80 8081 不可以

其中除nginx之外,其它端口映射都可以取消。
需要保证上面 主机映射端口 这一列端口没有占用,如果占用可以去docker-compose.yml文件中取消或者修改端口映射,只要 别改ui-service主机映射端口 就好。

开发计划

业务

  • 登录、注册、添加好友
  • 双人聊天消息转发,存储双人聊天记录,查看双人聊天记录
  • 创建群组
  • 群组聊天消息转发,存储群组聊天记录,查看群组聊天记录
  • 查看群组成员,邀请好友入群
  • 存储离线聊天记录,登录时查询相关离线聊天消息
  • 聊天页面可以点击查看更多,每次去查询下一页记录
  • 用户可以修改个人信息,上传头像
  • 解决Netty多实例在线成员信路由共享问题
  • 进行消息过滤,预防SQL注入和XSS攻击
  • 增加统一鉴权机制,进行权限校验
  • 可发送表情消息
  • 可发送图片消息
  • 解决用户在线状态错误Bug
  • 优化前端请求后端次数,减少不必要的请求
  • 重构前端
  • 可发送语音消息(以下为待定计划)
  • 实时语音聊天功能
  • 实时视频聊天功能
  • 修改或重写Android App

基础设施、中间件

  • 使用Docker管理服务
  • 使用Docker Compose进行服务编排
  • 使用Kubernetes进行部署(包括自动扩容,负载均衡,服务注册,API网关等)
  • 使用Jenkins实现继续集成
  • 引入Zipkin/Pinpoint监控调用链
  • 引入Istio监控管理服务调用

技术更新、优化

  • 发送聊天消息时使用protobuf代替json
  • 必要地方增加Redis缓存
  • 内部服务调用增加RPC调用版本

项目文档

其它项目开发技术、开发文档见doc/ 目录,目前尚在施工中。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].