主要参考文章:
https://ruby-china.org/topics/22530
因为文章本身的时效性,目前在协议端个人还是更加看好MQTT:
https://github.com/mqtt/mqtt.github.io/wiki/servers
服务器选型的话,如果是考虑到现有后台coder, 建议选java 框架的;否则建议选择Erlang框架的,目前筛选看来,MQTT建议emqttd; xmpp建议Ejabberd
不过个人对下面这段话还是比较认同的:
引用
** 开源的IM框架也有不少,为什么我不可以自己搭建一个IM服务器,自行开发呢? **
a) 自行研发移动IM,技术门槛高,开发周期长。根据我们的经验,至少需要资深的Android工程师,iOS工程师,后台工程师各一名,需要至少2到6个月时间。主要的技术难点包括:
协议和IM服务器的选择:当前常用作IM的协议包括XMPP和MQTT,也有用SIP的,还有自行开发的私有协议。- - 可以使用的开源的IM服务器包括OpenFire, Tigase, Prosody, Mosquitto, ejabberd等。你知道它们各自的优缺点吗,你知道哪个协议,那个IM服务器实现最适合你的需求吗,你知道你一旦选定了一个方案,你分别需要对协议和IM服务器做哪些改动和改进吗?
不稳定网络环境下(3G,2G,Wifi,无网络,及各种网络环境下的切换)移动终端即时通讯长连接可靠性的维护
移动终端耗电量优化
移动终端流量优化
发送各类富媒体消息的特定处理,如语音文件格式选择,语音压缩算法,语音降噪算法,图片压缩处理,地理位置,名片,文档等
消息回执处理(ack),防止消息丢失。
离线消息处理。离线时的实时消息通知(比如通过第三方推送平台)
实时状态同步
支持千万级同时在线用户的高可靠,高并发的服务器集群架构的搭建和运维
安全
b) 移动IM是一个需要长期跟进和维护的技术,并不是产品上线后研发团队就可以解散了。作为运营者,你做好长期的技术投入的思想准备了吗?比如新的IM功能层出不穷,如匿名社交,阅后即焚,你的产品要不要与时俱进?移动IM相关的各种安全隐患和漏洞,你要不要及时修复?所以你需要问自己一个问题,移动IM技术是你的核心竞争力吗,还是只是支撑你的业务实现的一个工具?
c) 移动IM服务对服务器硬件,网络,运维环境,都有非常高的要求。需要长期持续的服务器端运维投入。
d) 绝大多数团队都不具备百万级,千万级并发的IM技术。一旦用户量爆发性增长,APP的基本可用性会有极大的隐患。
在比较了几个国内的IM云服务,目前 环信,融云,leancloud 都比较成熟了,个人还是建议通过这种方式实现im功能。环信在日活量30w-内是免费的,对于我们的业务需求在初期试错是有效而低成本的。(目前,知乎,猎聘等也是使用的云im)
如果可以选择云im的话,主要精力可以放在app/app Server端的开发。在通过初期后,确有必要再自建IM Server 进行转接即可。
分享到:
相关推荐
APP-IM后台选型
首先,从标题来看,“imim.zip_imim-user-194177_imim-user-237221_imim-user-444202_imim”可能是用户ID的组合,暗示这可能是一个社区共享的代码资源,由多个用户参与讨论或改进。其中,“imim”可能是项目名或特定...
图尔克IM系列安全栅温变选型手册 图尔克IM系列安全栅温变选型手册
### SIMATIC ET 200 SMART IM60 远程IO模块系统手册核心知识点解析 #### 一、系统概述 SIMATIC ET 200 SMART IM60 是一款高效的远程IO模块,专为工业自动化应用设计。这款模块支持灵活、快速的现场层设备连接,...
IM1281B是一款专用于电力参数测量的高性能仪表,尤其在功率因数和功率测量方面表现出色。本文将详细介绍IM1281B的功能、编程C语言的方法以及其在实际应用中的重要性。 首先,IM1281B是一款智能电力仪表,能够实时...
J-IM是一个即时通讯(IM)中间件,它是基于高性能网络通信框架t-io开发的。J-IM旨在提供一个轻量级、高性能、易扩展的即时通讯解决方案,能够支持百万级在线用户。作为一个中间件,J-IM不仅可以作为IM服务无缝集成到...
oce im3512 im4512 驱动64位是针对OCE公司生产的一款多功能打印机的专用驱动程序,适用于64位操作系统,包括Windows 2003、XP以及Vista。这款驱动旨在确保打印机在64位环境下能够正常运行,提供高效的打印、扫描和...
JAVA开发高性能IM即时通信系统源码,JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息...
在IT行业中,即时通讯(Instant Messaging,简称IM)是一种广泛应用于个人和企业之间的实时通信技术。腾讯IM作为业界知名的服务提供商,为开发者提供了丰富的API和SDK,使得开发者能够快速地在其应用中集成聊天、音...
本项目名为"ofdm_im-master_OFDM-IM_ofdmim_IM-OFDM",主要关注的是正交频分复用(Orthogonal Frequency Division Multiplexing, OFDM)与改进型正交频分复用(Improvement Modulation over OFDM, IM-OFFDM)的实现...
SIMATIC ET 200S IM 151-7 CPU 接口模块是一款由西门子制造的工业自动化设备,主要用于实现分布式控制系统中的数据处理和通信。此模块是SIMATIC ET 200S系列的一部分,设计用于扩展ET 200S系统的能力,集成CPU功能,...
价值1w的伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码,后端是java源码。 价值1w的伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码,后端是java源码。 价值1w的伊...
评估了一下团队实力后,并不允许,所以找了一个IM第三方框架,采用的是腾讯云的即时通信IM,但是目前腾讯云IM的小程序SDK并没有包含UI,因此就需要自己来开发页面样式和交互,腾讯云IM自己也提供了一个demo,但是...
标题中的"C# 编写的IM通讯"指的是使用C#编程语言开发的即时通讯(Instant Messaging,简称IM)系统。IM是一种允许用户实时交换消息的技术,常用于聊天应用、在线客服系统以及团队协作工具等。C#是微软开发的一种面向...
IMServer是一种专为即时通讯(IM)设计的服务器软件,其核心特性包括支持集群、路由功能、SSL安全连接以及自定义通信协议。这些特性使得IMServer成为构建高效、安全、可扩展的聊天应用的理想选择。 首先,让我们...
《52im即时通讯系统:后端IM源码解析与应用》 52im即时通讯系统是一款基于Java技术构建的高效、稳定、可扩展的移动通信解决方案,它为开发者提供了强大的后端源码,用于构建实时聊天应用。该系统不仅支持一对一的...
西门子力矩电机1FW3_选型手册pdf,西门子力矩电机1FW3_选型手册:1FW3 整套转矩电机将作为整套设备完成安装后进行供货。 按不同的轴长度分为 3 种外直径类型。 为了可以安装到机床结构之中,定子(Stator)和转子(Rotor...
IM(Instant Messaging)即时通讯程序是互联网应用中的重要组成部分,它允许用户实时地进行文本、语音、视频等通信。这个“个人IM程序源代码-IM程序”是一个供个人研究和学习的项目,可以帮助开发者深入了解IM系统的...
IM排队,转诊测试用例IM排队,
本话题聚焦于如何使用Java语言对接腾讯即时通讯(IM)服务,实现聊天功能接口。腾讯IM提供了一整套完整的实时通信解决方案,适用于各种应用场景,如社交、教育、企业协作等。以下将详细介绍对接过程中的关键步骤和...