All Projects → wildfirechat → Im App_server

wildfirechat / Im App_server

Licence: other
Demo of IM application server

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Im App server

T Io
解决其它网络框架没有解决的用户痛点,让天下没有难开发的网络程序
Stars: ✭ 1,331 (+706.67%)
Mutual labels:  im
Light Push
轻量级推送服务和实时在线监控平台,同时用于开发即时通信系统,基于node的socket.io,支持web、android、ios客户端,支持移动端离线推送,可进行分布式部署
Stars: ✭ 128 (-22.42%)
Mutual labels:  im
Chat
一个聊天 App,包含单聊和群聊功能,支持发送文本以及表情包
Stars: ✭ 146 (-11.52%)
Mutual labels:  im
Im ios
GoBelieveIO IM iOS sdk
Stars: ✭ 116 (-29.7%)
Mutual labels:  im
Ejabberd Open
QTalk是基于ejabberd,根据业务需要改造而来。修改和扩展了很多 ejabberd不支持的功能。
Stars: ✭ 124 (-24.85%)
Mutual labels:  im
Im
golang写的IM服务器,支持多业务接入
Stars: ✭ 138 (-16.36%)
Mutual labels:  im
Matrix Commander
simple but convenient CLI-based Matrix client app for sending and receiving
Stars: ✭ 90 (-45.45%)
Mutual labels:  im
Android Chat
开源即时通讯(野火IM)系统Android端
Stars: ✭ 2,107 (+1176.97%)
Mutual labels:  im
Nami
Stars: ✭ 125 (-24.24%)
Mutual labels:  im
Vue Im
A Vue.js 2.0 IM;基于Vue2.0的在线客服系统
Stars: ✭ 143 (-13.33%)
Mutual labels:  im
Android yichat lite
android client
Stars: ✭ 118 (-28.48%)
Mutual labels:  im
Im service
golang im server
Stars: ✭ 1,694 (+926.67%)
Mutual labels:  im
Hyperf Chat
Hyperf Chat
Stars: ✭ 139 (-15.76%)
Mutual labels:  im
Gim
golang写的IM服务器(服务组件形式)
Stars: ✭ 1,343 (+713.94%)
Mutual labels:  im
Netty Learning Example
🥚 Netty实践学习案例,见微知著!带着你的心,跟着教程。我相信你行欧。
Stars: ✭ 2,146 (+1200.61%)
Mutual labels:  im
Flutter lc im
一个简单、轻量可用于正式项目的 flutter 聊天插件。
Stars: ✭ 94 (-43.03%)
Mutual labels:  im
Fpush
📶即时消息推送服务(即时通讯),基于Netty+protobuf-- Instant Messaging push service based on Netty+protobuf
Stars: ✭ 134 (-18.79%)
Mutual labels:  im
Gff
GFF is a imitation QQ communication project, based on high IOCP. GFF是模仿QQ通讯项目,通信基于SAEA.MessageSocket、SAEA.Http、SAEA.MVC实现
Stars: ✭ 162 (-1.82%)
Mutual labels:  im
Nettychat
基于Netty+TCP+Protobuf实现的Android IM库,包含Protobuf序列化、TCP拆包与粘包、长连接握手认证、心跳机制、断线重连机制、消息重发机制、读写超时机制、离线消息、线程池等功能。
Stars: ✭ 1,979 (+1099.39%)
Mutual labels:  im
Him Vue
开源的H5即时聊天系统 spring-boot + netty + protobuf + vue ~
Stars: ✭ 142 (-13.94%)
Mutual labels:  im

野火IM后端应用

作为野火IM的后端应用的演示,本工程具有如下功能:

  1. 短信登陆和注册功能,用来演示登陆应用,获取token的场景.
  2. PC端扫码登录的功能.
  3. 群公告的获取和更新功能.
  4. 客户端上传日志功能.

本工程为Demo工程,实际使用时需要把对应功能移植到您的应用服务中。如果需要直接使用,请按照后面的说明解决掉性能瓶颈问题。

编译

mvn package

短信资源

应用使用的是腾讯云短信功能,需要申请到appid/appkey/templateId这三个参数,并配置到tencent_sms.properties中去。用户也可以自行更换为自己喜欢的短信提供商。在没有短信供应商的情况下,为了测试可以使用superCode,设置好后,客户端可以直接使用superCode进行登陆。上线时一定要注意删掉superCode

修改配置

本演示服务有4个配置文件在工程的config目录下,分别是application.properties, im.properties, aliyun_sms.propertiestencent_sms.properties。请正确配置放到jar包所在的目录下的config目录下。

application.properties配置中的sms.verdor决定是使用那个短信服务商,1为腾讯短信,2为阿里云短信

运行

target目录找到app-XXXX.jar,把jar包和放置配置文件的config目录放到一起,然后执行下面命令:

java -jar app-XXXXX.jar

性能瓶颈

本服务最早只提供获取token功能,后来逐渐增加了群公告/Shiro等功能,需要引入数据库。为了提高用户体验的便利性,引入了数据库H2,让用户可以无需安装任何软件就可以直接运行(JRE还是需要的),另外shiro的session也存储在h2数据库中。提高了便利性的同时导致一方面性能有瓶颈,另外一方面也不能水平扩展和高可用。因此需要使用本工程上线必须修改2个地方。

  1. 切换到MySQL,切换方法请参考 application.properties 文件中的描述。
  2. 使用RedisSessionDao,详情请参考 https://www.baidu.com/s?wd=shiro+redis&tn=84053098_3_dg&ie=utf-8

版本兼容

  • 0.40版本引入了shiro功能,在升级本服务之前,需要确保客户端已经引入了本工程0.40版本发布时或之后的移动客户端。并且在升级之后,客户端需要退出重新登录一次以便保存session(退出登录时调用disconnect,需要使用false值,这样重新登录才能保留历史聊天记录,一定要在新版本中改成这样)。如果是旧版本或者没有重新登录,群公告和扫码登录功能将不可用。为了系统的安全性,建议升级。

  • 0.43版本把Web和PC登录的短轮询改为长轮询,如果应用服务升级需要对Web和PC进行对应修改。

  • 0.45.1 配置文件中添加了wfc.all_client_support_ssl开关,当升级到这个版本或之后时,需要配置文件中添加这个开关。

注意事项

服务中对同一个IP的请求会有限频,默认是一个ip一小时可以请求200次,可以根据您的实际情况调整(搜索rateLimiter字符串就能找到)。如果使用了nginx做反向代理需要注意把用户真实ip传递过去(使用X-Real-IP或X-Forwarded-For),避免获取不到真实ip从而影响正常使用。

使用到的开源代码

  1. TypeBuilder 一个用于生成泛型的简易Builder

LICENSE

UNDER MIT LICENSE. 详情见LICENSE文件

使用阿里云短信

请参考说明使用阿里云短信

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].