曾今做过web im ,总结下目前我所了解到的web im解决方案。做 web im ,有2个难题,一个是http长链接,一个是服务端,互相搭配起来也很多,比如:
1.pushlet + map pushlet基于事件模式的,是个js库,这个我架了个demo,感觉深入比较复杂,当时略过。服务端就是自己搞个线程安全的map处理业务逻辑,主要是发消息,所有在线人员
2. dwr ,服务端和上面的类似。只是长链接是dwr做的。
3. flash 的 xmlsocket + mina ,基于 flash的,我当时还做了个demo,后来因为考虑浏览器支持放弃了。
以上1和2方案,我认识的有几个目前还在这么做,特别是企业系统的,也是09年左右用的最多的方案。
3. dwr + openfire 这个是我去年做webim提出的一个解决方案,将dwr的 scriptsessionid和 openfire的监听器绑定,当onMessage的时候就推消息。当时最多差不多有个1000人聊天,dwr可以HOLD住,后来也不知道有多高了。
4.自己用多线程写长链接 + openfire,这是去年项目里面替换dwr的方案,由一位同事写的,还是比较猛的。
当时pv 4W,还是很稳定的。其实发现openfire还是很能抗的,他一般不会出啥问题。
5. servlet3.0 + jms 这个服务端变成了 jms,利用发布,订阅帮我们处理转发,servlet3.0来长链接。
6. servlet3.0(springmvc) 去年这个时候springmvc3.2打算封装servlet3.0,有个DeferredResult
根据官方的demo,这个DeferredResult,是这个意思,比如A发起一次长链接,就创建一个,放到一个map,里面。这个时候B发消息给A,B从map里面get到A对应的DeferredResult,然后给他setResult,那么A马上收到消息。然后A再回调下,从map移除
deferredResult.onCompletion(new Runnable() {
@Override
public void run() {
System.err.println("onCompletion");
rs.remove(deferredResult);
}
});
如果再让我做webim,我会考虑这个方案,再和openfire结合起来,现在都过去几年了servlet3.0的容器也越来越成熟了。
6. websotck 系 /nodejs/ stock.io 去年调研im的时候看到过nodejs这个新东西,发现很猛,但是基于webstock直接放弃了,后来才知道Socket.IO这个东西会跨浏览器,如果没有html5支持就用flash的。
7. Python 系 Tornado ,这个facebook出品,号称直接秒杀1W并发高性能框架,在异步IO相当之给力,如果我再拾Python,这个会优先考虑。
总体看来还是web的长链接和服务端,而且随着技术的更新,方案是越来越多,绝不限于上面的,不过有
一点需提醒,如果想支持比较多的用户,需要发挥的好才行。 其他一些具体的技术细节,等以后有时间了补上。
相关推荐
跨平台、全开源的野火IM解决方案的iOS部分,是一个完整的IM。.zip,开源的即时通讯(野火IM)系统 高仿微信
Xiaper·企业开源IM解决方案 是全栈企业开源IM解决方案,包括服务器库和客户端库。 该服务器基于Spring Boot开发,支持集群和Spring Cloud。客户端库包括:Android,iOS,Web / HTML5,Windows,Mac和微信小程序。 ...
喧喧是一款开源免费的企业即时通讯IM软件、聊天软件,提供企业内部通讯交流、企业通讯录、协同办公通讯交流、企业IM解决方案。 喧喧是由然之协同推出的即时通信解决方案。 喧喧功能特色 开聊:和服务器上的任何...
即时通讯(IM)涉及多个组件,如客户端、服务器和可能的数据库。这里是一个简化的Java即时通讯项目...在实际开发中,您可能需要使用现有的IM框架或库,如Smack(基于XMPP协议)或其他专门用于Java应用程序的IM解决方案。
野火IM解决方案野火IM是一套跨平台、全开源的即时通讯解决方案,主要包含以下内容。仓库说明备注android-chatAndroid平台的SDK和Demoios-chatiOS平台的SDK和Demopc-chat基于Electron开发的PC平台Demoproto野火IM的...
风车im 是一款独立服务器部署的即时通讯解决方案,可以帮助你快速拥有一套自己的移动社交、 企业办公、多功能业务产品。独立部署!加密通道!牢牢掌握通讯信息!
IM消息平台的建设,必将为企业及其员工带来全新的体验,提高企业的内部沟通能力、管理水平、工作效率,促进企业更快的发展。 为购物网站增强商家和买家的交流,游戏网站玩家的沟通,交友网站会员的沟通都有积极推动...
第一章 JAVA领域的IM解决方案 3 第二章 安装OPENFIRE3.6.4 3 2.1 配置机器的域名 3 2.2 安装OPENFIRE 3 2.2.1 安装 3 2.2.2 运行数据库脚本 4 2.2.3 数据库驱动jar包 6 2.2.4 openfire初始化配置 6 2.3 设置用户 12 ...
喧喧是一款开源免费的企业即时通讯IM软件、聊天软件,提供企业内部通讯交流、企业通讯录、协同办公通讯交流、企业IM解决方案。喧喧是由然之协同推出的即时通信解决方案。喧喧功能特色开聊:和服务器上的任何用户开聊...
野火IM解决方案野火IM是一套跨平台,核心功能开源的即时通讯解决方案,主要包含以下内容。仓库说明备注野火IM Android SDK原始码和应用原始码可以很方便地进行二次开发,或集成到现有应用当中野火IM iOS SDK原始码和...
野火IM解决方案 野火IM是一套跨平台,核心功能开源的即时通讯解决方案,主要包含以下内容。 仓库 说明 备注 野火IM Android SDK原始码和应用原始码 可以很方便地进行二次开发,或集成到现有应用当中 野火IM iOS SDK...
野火IM解决方案升级注意v0.8.0版本,对代码结构及部分实现机制进行的调整调整,移动如下:将chat应用模块拆分为两部分: uikit库模块和chat 。应用模块uikit可以库的方式导入项目,里面包含了大量可重用的UI。可移除...
NC的供应链管理解决方案,是由3类不同关注点的解决方案组成,包括:关注集团组织内部供应链资源整合的解决方案,通过整个产业供应链协同和推升营销(含分销)能力的整体解决方案,全面整合营销(E-IM)解决方案;...
野火IM是一套跨平台,核心功能开源的即时通讯解决方案,主要包含以下内容。 仓库 说明 备注 野火IM Android SDK原始码和应用原始码 可以很方便地进行二次开发,或集成到现有应用当中 野火IM iOS SDK原始码和App原始...
野火IM(wildfirechat)是一套全平台、功能齐全、二开友好的即时通讯和实时音视频解决方案
野火IM(wildfirechat)是一套全平台、功能齐全、二开友好的即时通讯和实时音视频解决方案。功能特性:极致地硬件利用率,IM服务最低128M内存即可运行,上不封顶。协议先进,采用MQTT+Protobuf组合,流量和性能极致...
理解IM消息可靠性和一致性问题,以及解决方案探讨.docx
IM即时通讯开源项目 Microsoft.AspNet.SignalR 生成出错解决方案 ,找不到node_modules文件夹下的一系列文件