XMPP,WebSocket和其他问题

mat*_*att 6 .net android chat xmpp websocket

我现在的目标只是制作一款具有WhatsApp功能的Android应用程序(不一定是WhatsApp的克隆版;只是具有类似的,可能不那么好的功能).重要的是我认为群聊,在线/离线状态以及离线消息.

现在我主要知道有一个WebSocket服务器的可能性(因为我作为一个实时解决方案介绍它可以让我开启无限的可能性),我之前测试过 - 它看起来不错.但是,我面临以下问题:

  1. 我不知道如何管理在线/离线存在; 我必须自己实施吗?如果他的朋友仍然连接,也许Android客户端每30秒查询一次服务器...
  2. 离线消息怎么样?如果一个特定的人不接,该消息不会被交付给他.然后消息是否需要存储在某个地方(比如MSSQL),然后当人登录客户端时会自动检索来自服务器的所有离线消息?
  3. 小组聊天怎么样?我不确定WebSocket是如何实现的,我是否必须单独实现它?这意味着需要处理很多商业逻辑(以及出现错误的大量空间)......

我知道有一个名为XMPP的协议(并且它与WebSocket完全不同)但我不确定它与我的问题有什么关系.XMPP是我的银弹(也就是那里有.NET库,它们可以为我实现大部分吗?).我也听说过Comet,但我不知道它有什么关系......

有很多缺失的部分,我认为实现我的聊天服务器/客户端将是一块蛋糕,但显然不是这样.任何有经验的人都可以给我一些反馈意见吗?

Bud*_*ius 3

让我们按部分进行:

第一:不要使用套接字。这意味着您需要在每个客户端设备上保持服务运行并始终保持连接。这会疯狂地耗尽电池,没有人会使用它。这些应用程序(包括 WhatsApp、Hangout、Gmail、Facebook Messenger)中的每一个都使用 Google 云消息传递 (GCM) http://developer.android.com/google/gcm/index.html服务。

  1. 也许您希望可以在这些状态更改发生时通过 GCM 发送这些更改,或者一旦用户进入朋友列表屏幕,您就可以一次性查询状态,这里重要的是您不会每 30 秒查询一次在移动设备中。

  2. 是的,如果设备未连接,您的服务器必须执行这些操作。我不相信你会使用 SQL,由于可扩展性,现在很多公司正在做的是 noSQL 方法,但这不是我的专业知识。

  3. 我不确定你在这里问什么。您将发送数据的方式与应用程序处理数据的方式混合在一起。这是两个完全不同的事情,了解区别。例如,某人可以创建一个通过 UDP 上的 WiFi-Direct 工作的群聊(这就是数据发送的方式),但你如何处理这些数据并不重要,它可能是通过蓝牙到达的,这对于其他人来说是相同的解析器/解释器。这只是数据。

祝你好运。