0

在Snapchat,Line,Kik,Groupme等应用程序中,用户可以使用联系人列表从中发送消息给多个人。在移动消息应用程序中,是否应该从服务器或客户端发送消息?

我正在构建一个消息应用程序,它具有类似的功能,并且首先要添加一个服务器并让服务器存储设备令牌并从服务器发送通知。 (顺便说一句,我使用城市飞艇发送推送通知。)所以我想象的方式是这样的:

  1. 用户A写道:“你好”向用户B
  2. “你好”被公布我的服务器那里得到存储在数据库,供以后检索
  3. 后2是成功,服务器上岗“你好”,以城市飞艇服务器(Server有它拥有所有的设备ID信息的联系人列表)

然后我意识到这也可以做到客户端,也就是说,如果可以存储au的设备标记ser的联系人在他们的应用程序。因此,这是它如何工作的:

  1. 用户A写道:“你好”向用户B
  2. “你好”被贴到我的服务器里将被存储在数据库,供以后检索
  3. 后2成功后,客户端(iPhone)帖“你好”直接到城市飞艇服务器(应用程序商店的所有核心数据用户的联系人的设备ID)

我在推送通知这样一个新手甚至不知道在客户端存储设备令牌是否安全/正常,但我觉得它会更有效率在服务器负载(我的服务器)方面,因为所有的推送通知请求都是从客户端发送的。对最佳做法有何建议?谢谢

回答

1

其实这听起来像一个非常糟糕的主意。 1.当用户加入网络时,您需要将令牌发布给与其相连的所有用户。 如果你有大量的新用户,它不那么聪明。 2.一个简单的嗅探器(网络嗅探器\ openSSH嗅探器)可以检测用户令牌。 安全明智,这不是一个好主意。 3.另外,它超载用户的设备。经验法则,所有开销都应由服务器处理。 考虑一下:

- 用户的发送 “你好” 向用户B

  1. 用户A发送味精服务器
  2. 服务器保存味精+发送 “OK”,以用户A
  3. 用户A收到“确定”,现在再次发送消息给用户B
  4. 用户B收到消息并发送给用户A“确定”。 您如何知道用户B获取的信息?他会向服务器发送“OK”吗?

为了使事情简化, 去第一种方法,第二种是非常不推荐..

好运:-)

+0

您对安全问题的评论是有道理的。这就是为什么我问,因为我不太了解设备令牌的含义。它不好吗?设备令牌可以做什么?我问,因为我认为只是设备令牌不能帮助你做任何事情 - 用户必须为应用程序授予许可才能开始发送推送通知 – Vlad

+0

关于第一点,您不一定必须发布所有的令牌都传递给每个设备。假设我有200个朋友,我只需要这200个朋友的设备令牌。因此,无论何时打开应用程序,它都可以获取200个朋友列表的服务器(或者如果有新朋友注册),然后只存储这200个,而不是整个用户群。 – Vlad

+0

如果我有令牌,我需要你和你的服务器?我可以直接发邮件给所有的朋友..广告我仍然相信你需要服务器..有令牌dosent的选项让你选择发送Token2Token msging ..你需要一个服务器在中间。和安全明智的,如果我有你的令牌,我可以假装你是你的令牌,并得到你的消息和发送你的belhaf ..想想它:-)(和投票如果答案帮助你:-)) –

1

如果您正在使用苹果推送通知服务,你一定要在服务器从设备A从上述原因发送通知到设备,而不是直接到设备B.除在另一个答案中,存在与APNS服务器保持连接的问题。

如果每个设备都可以将其消息直接发送到APNS,则每个设备都必须维护自己的TLS连接到APNS服务器。由于设备通常与互联网连接和断开连接,因此该连接将频繁关闭并重新打开。乘以安装应用程序的设备数量,您将拥有大量短期连接到APNS的连接。这可能会导致您的证书被吊销。

保持与APNs的连接在多个通知中打开;不要反复打开和关闭连接。 APN将快速连接和断开视为拒绝服务攻击。除非您知道它会长时间处于空闲状态 - 例如,如果您每天仅向用户发送一次通知,则每天都可以使用新连接,否则应该保持连接处于打开状态。

Source

相关问题