应用即时通讯

Posted

技术标签:

【中文标题】应用即时通讯【英文标题】:instant messaging for apps 【发布时间】:2017-01-21 14:45:05 【问题描述】:

我正在使用 spring mvc 开发 Web 和移动应用程序,但在理解用于制作即时消息的不同协议和工具(如网站中的 facebook 消息或 whatsapp 即时通知)时遇到问题。项目中除了聊天之外的一个功能是用户发送请求并等待其他用户响应并立即通知他们)。

但是我迷路了,因为有人说在移动设备上使用 GCM 或 FCM,而其他人说还有其他协议,例如 STOMP 和 AQMP 以及其他一些协议。我不知道在我的 rest api 中看到和使用什么,以便它适用于浏览器和移动设备,同时考虑性能和其他问题以及如何使用来自客户端的这些消息(我的意思是消费方法是否会根据选择的协议?)。我是否应该根据请求的来源使用多种协议和工具(即,如果移动和 android --> GCM 或 FCM,如果浏览器 STOMP,例如,如果 ios --> 不知道使用什么)。

我知道这看起来像是一个普遍的问题,但我真的迷路了,我不知道这些天从什么开始选择正确的事情。

【问题讨论】:

【参考方案1】:

消息堆栈由多个组件组成。其中之一是消息传输 - 用于在服务器和客户端之间传递消息。在这种情况下,FCM/GCM/APNS 是传输协议。

不推荐使用 GCM,取而代之的是 FCM。 FCM 将适用于 Android、最新版本的 iOS 甚至一些浏览器。但是,如果用户为您的应用禁用通知,消息将停止工作。推送通知也有一些不可预测的延迟,特别是如果您想发送大量消息,例如输入通知。

消息格式是堆栈的另一个组成部分。例如,STOMP 是消息格式协议。它是为任何串行传输定义的,即可以通过 FCM 或 TCP 或 websocket 使用。

鉴于您提出的问题,您编写自己的消息堆栈看起来完全不切实际。只需选择现成的东西,比如百万台 XMPP 服务器中的一台或更现代的一台,比如 Tinode。谷歌一下。

【讨论】:

以上是关于应用即时通讯的主要内容,如果未能解决你的问题,请参考以下文章

im即时通讯开发:如何选择数据传输格式

im即时通讯开发:Protobuf数据传输格式

企业内部即时通讯软件哪个最好用呢?

详解企业内部即时通讯工具特点

私有化即时通讯软件可以保证员工的通讯安全吗?

Android基于xmpp的即时通讯应用