easy-im:一款基于netty的即时通讯系统

介绍

easy-im是面向开发者的一款轻量级、开箱即用的即时通讯系统,帮助开发者快速搭建消息推送等功能。

基于easy-im,你可以快速实现以下功能:

+ 聊天软件

+ IoT消息推送

基本用法

项目分为easy-im-client、easy-im-server、easy-im-common三个模块。

服务端: 执行mvn package后生成easy-im-server.tar.gz,解压后至./lib目录执行命令:

java -jar -Dport=8888 easy-im-server-1.0-SNAPSHOT.jar,即可启动服务端,其中port是服务端口。

客户端: 执行mvn package后生成easy-im-client.tar.gz,解压后至./lib目录执行命令:

java -jar -Duserid=110 -Dusername=zhangsan -Dhost=127.0.0.1 -Dport=8888 easy-im-client-1.0-SNAPSHOT.jar。

其中userid为用户id,username为用户名,host为服务端ip,port为服务端端口,其中userid要保持唯一性。

用法: 客户端启动后,在命令行输入命令,命令格式为 command::content ,命令以英文双冒号为分隔符,现已支持如下命令:

+ 单聊 sendToUser::userId::msg

+ 群聊 sendToGroup::groupId::msg

+ 发起群聊 createGroup::userId1,userId2,userId3...

+ 广播 broadcast::msg

后续计划加入更多命令,如:

+ 退出群聊 quitGroup::groupId

+ 加入群聊 joinGroup::groupId

+ 查询所有在线用户 getAllUsers

+ 查询群聊中在线用户 getGroupUsers::groupId


后边打算将服务端做成可无限扩展的架构,使之满足高并发的需求。具体分为以下几个步骤:

增加路由层: 所有发送的消息由路由层转发给响应的服务端,服务端再由长连接转发至客户端,以此解决发送端与接收端不在同一台服务器上,无法通讯的问题

增加存储介质: 将所有群组关系、客户端与服务器的对应关系、用户信息等存储起来,可以用redis或者MySQL,也可存储历史消息

增加服务治理: 服务端如果要无限扩展,必须通过服务注册、服务发现的机制,可以通过zookeeper,或者eureka实现

有兴趣共同参与的同学,请加我微信 enM2MTA1MzI2 (请用base64解码),一起完善,共同进步。


欢迎扫码关注公众号:程序员顺仔

原文地址:https://www.cnblogs.com/sunnick/p/10328334.html

时间: 2024-08-05 14:06:50

easy-im:一款基于netty的即时通讯系统的相关文章

Android基于XMPP的即时通讯2-文件传输

本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager getFileTransferManager() { if (fileManager == null) { ServiceDiscoveryManager sdManager = ServiceDiscoveryManager .getInstanceFor(connection); if (sdMana

Android基于XMPP的即时通讯3-表情发送

这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs.com/files/pear-lemon/drawable.zip 2.表情布局文件layout_send_emotion.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln

lite-monitor 一款基于shell命令的监控系统

介绍 lite-monitor 一款基于shell命令的监控系统,可以根据项目中输出的日志定时输出或者统计输出,并发送钉钉机器人报警消息. lite-monitor能做什么: 定时监控某个服务进程是否还存在,不存在则钉钉告警. 定时统计近一段时间内具体日志文件中关键字出现的次数,并对次数做一个阈值比较,超出阈值则钉钉告警并输出日志. 进阶监控(qps/计算效率等)可以根据awk等命令自定义实现. lite-monitor的特点: 每个监控可配置不同钉钉群机器人,可配置@具体人或者@all 对已有

【实战】如何亲手搭建一个分布式 IM(即时通讯) 系统

前言 老读者应该还记得我之前分享过一篇<设计一个百万级的消息推送系统>:虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码:这么久了是时候把坑填上了. 目录结构: 本文较长,高能预警:带好瓜子板凳. 于是在之前的基础上我完善了一些内容,先来看看这个项目的介绍吧: CIM(CROSS-IM) 一款面向开发者的 IM(即时通讯)系统:同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM . 借助 CIM 你可以实现以下需求: IM 即时通讯系统. 适用于 APP 的

转:移动端即时通讯系统实践

移动端即时通讯系统实践 2016-04-19 廖锦幸 iOS开发探索 在信息高度发达的今天,IM基本上已经成为了一个社交应用的标配.本文将以一个移动开发者的视角,探讨移动端即时通讯系统的技术选型和关键要点. 1 即时通讯系统的需求 任何技术系统都来源于真实业务的需求,做架构设计之前应该先设定好目标.作为一个即时通讯应用,可以参考微信的使用体验,你需要保证以下特性: 1,实时.消息的接收端应该能够及时收到并处理消息. 2,不丢.需要保证所有的消息都顺利送达. 3,不重.重复的消息对用户来说是一种糟

区块链IM即时通讯系统app开发,直播软件开发

区块链IM即时通讯系统是通过即时通讯技术来实现在线聊天.交流的系统软件.而区块链IM及时通讯系统则是一款集合了社交与钱包储存等多功能的一套系统. 区块链IM即时通讯开发 前面138中间2315后面3201 区块链IM即时通讯系统开发都有哪些优势呢? 1.利用本身的社群社交优势为项目方提供强大的活动方案推广 2.区块链社交直播系统,可以时时进行直播教学或者直播讲解新品,这便可以方便与客户面对面讲解,也可以很好的进行吸粉. 3.专业数字资产交易所交易功能,沟通及时,快速交易. 4.深度结合商城的模式

GGTalk ——C#开源即时通讯系统

http://www.cnblogs.com/justnow/ GGTalk ——C#开源即时通讯系统 下载中心 GGTalk(简称GG)是可在广域网部署运行的QQ高仿版,2013.8.7发布GG V1.0版本,至今最新是5.5版本,关于GG更详细的介绍,可以查看 可在广域网部署运行的QQ高仿版 -- GGTalk总览. GGMeeting是可在广域网部署运行的视频会议系统Demo,2015.05.11发布V1.0版本,关于GGMeeting更详细的介绍,可以查看 打造自己的视频会议系统 GGM

视酷即时通讯系统应用源码 V1.0

视酷即时通讯系统(原创),成熟稳定,拥有和微信一样强大的功能不再是梦,节省几个月研发时间迅速融合进项目中: 1.首家支持聊天室群聊 2.支持和微信一样的语音聊天,可以显示时长.未读状态,自动轮播未读语音:     3.支持发送图片.表情.GIF动画表情等:     4.数据库分库分表,速度极快,界面细节处理优美,bug极少.     5.另有注册用户.用户列表.加好友.好友列表等功能.     6.实现了发消息后,如接收方不在线,除了离线消息外,会自动推送通知,留了推送接口    7.安卓端和苹

我的即时通讯系统发布前,先小秀一下

一.开发概要: 开发人员:本人 联系电话:18667102122 开发人数:1人 版权所有:杭州云寻觅网络科技有限公司 开发周期:2014-05-27 至今 备注:就一个人开发的,不要总是拿这个做了2,3个月的东西,跟几千人做了10多年的产品去比较,没有可比性.   所以比较的时候希望大家别失去理智! 二.架构及概述 1.总体架构图 2.服务端功能模块图 3.客户端功能模块图 4.客户端浏览器组件功能模块图 三.组成文件: 服务端:ImServer_5_0_0.exe 大小 88.6MB(含jd