在处理IM应用程序之前我需要知道什么?

时间:2010-05-25 11:39:28

标签: java-ee client-server instant-messaging architecture

我正在研究使用Java堆栈(至少为服务器)构建IM类型的应用程序。我有兴趣看到有关Skype / AIM / MSN等应用程序如何工作的任何信息/建议,以及了解可能相关的任何技术/ API。 在没有放弃这个想法的情况下,它可能更像是Google Wave而不是Skype,但非常受欢迎的信息非常受欢迎。

我已经想到的具体要点包括:

  • Server Vs P2P ...出于记录我的系统的原因,需要所有通信都通过中央服务器。这是其他IM工具的工作原理吗?特别是当音频/视频进入等式时?
  • 与其他系统的交叉沟通。是否有API或所有IM提供商努力保持其协议的秘密?我正在设计的本质意味着集成可能只会受到限制,但从业务角度来看它肯定是值得的

3 个答案:

答案 0 :(得分:3)

了解XMPP。有plenty个Java库,大多数主要的IM客户端都支持XMPP。

答案 1 :(得分:1)

如上所述,使用XMPP(代表可扩展消息传递和状态协议)。 你可以通过使用现有的XMPP服务器(例如,Openfire,ejabberd等)来逃避,而无需自己编程。有一种称为libpurple的东西用于使用专有的IM协议进行连接。

对于标准XMPP没有做的事情,您可以查看客户端机器人或external server components

答案 2 :(得分:0)

构建移动消息应用程序的方法有两种:聊天功能开发:

  • 从头开始构建专有解决方案
  • 与移动消息SDK解决方案集成。

这是一篇关于粗略估计的开发成本细分的文章,How Much Does It Cost to Develop WhatsApp?在3个月的开发中,最小的初始固定成本为260,000美元,大约有6名工程师和一个产品经理在硅谷或纽约这样的地方建造从头开始的基本移动聊天功能。更不用说将来运行服务器,维护,可扩展性和功能扩展的成本。花费美元和时间来构建聊天功能的机会成本是无法在核心功能上分配的资源(除非您正在构建另一个WhatsApp或Facebook Messenger)。

如果你的计划不是为了重新发明轮子,或者你是在节约工程资源并让专家更好地使用,或者只是用聊天功能测试水,那么整合第三方或者通常更简单,更具成本效益直接开源解决方案。它们通常提供随时可用的可定制UI库,跨平台SDK,后端API和Webhooks集成等。与使用Google Analytics,Parse / Firebase,Crashlytics,AFNetworking,Facebook API,{{3许多公司最初决定建立内部聊天解决方案,但后来发现他们的解决方案无法按预期扩展,因为客户群迅速增长。},Socket.io,Twilio for SMS,Stripe等。

但是,在开始集中聊天功能(无论是第三方集成还是内部解决方案)之前,您可能需要调查以下方面,

  • 成本效益:内部解决方案的投资回报率?实现规模经济?构建工程基础设施非常昂贵,计算初始固定开发成本,运行成本,维护,功能扩展等等。
  • 可扩展性:低延迟,水平扩展,垂直扩展,无停机时间扩展,整体性能等。
  • 可靠性:稳定性,可靠性,停机时间,保证邮件传递,不丢失邮件和包裹等。
  • 移动客户端设备:设备电池寿命,手机数据使用情况,零星和慢速互联网连接,
  • 所有权:专有与分层定价结构与私有部署和托管的许可
  • 安全性:加密,身份验证,隐私
  • 可移植性:支持不同平台。即,移动(Android,iOS),桌面(macOS,Windows)和各种Web浏览器。
  • 功能:一对一聊天,群聊,大量和同步对话,登录多个设备,文件共享,音频文件共享和播放,视频/语音呼叫等
  • 技术:有许多标准化技术,例如Hyphenate.ioXMPP,HTTP长轮询,MQTT等。大多数邮件构建标准协议的专有解决方案,例如Socket.io。许多第三方供应商已经提供了出色的API和SDK解决方案来缓解开发人员的头痛,例如Hyphenate.io。
  • 人力资源:您是否能够找到具备专业知识的工程师来满足上述所有要求? 另一件需要考虑的事情是可以加入时髦的聊天机器人,大数据分析(尤其是客户服务),加密等。检查第三方SDK,开源或您的工程团队是否能够提供这些灵活性或布局潜在的跑道。某些移动消息传递解决方案提供商(如Facebook Messenger is based on MQTT)具有丰富的聊天功能,并且具有很大的扩展灵活性,可供您处理。

最后,回答你的想法,

  1. Server Vs P2P ...出于记录我的系统的原因,需要所有通信都通过中央服务器。这是其他IM工具的工作原理吗?特别是当音频/视频进入等式时?
  2. Hyphenate为您处理通信或消息传递以及建立视频/语音呼叫。

    1. 与其他系统的交叉沟通。是否有API或所有IM提供商努力保持其协议的秘密?我设计的本质意味着整合可能只会受到限制,但从商业角度来看,这似乎是值得的。
    2. **在通信安全方面,您可能希望查看TLS / SSL的3个主要组件以实现传输层安全性,使用OAuth 2.0进行身份验证以及端到端加密。 **