【问题标题】:Developing chat application with PubNub使用 PubNub 开发聊天应用程序
【发布时间】:2015-10-15 09:18:45
【问题描述】:

我必须为用户创建一种可以互相聊天的功能。我发现PubNub 是解决这个问题的好工具。但这似乎并没有我想象的那么容易(。

用户登录后,他在对话的屏幕上。对话存储在我的服务器上的数据库中。 db 中的对话行示例:conversationID、conversationName、string - 用空格分隔的用户 ID。 要获取对话列表,我可以向我的服务器数据库发送请求,获取并显示在屏幕上。我还必须订阅所有这些对话频道。我认为每个对话的频道名称可以只是它在数据库中的 ID 号。

另外,我创建了一个屏幕,用户可以在其中创建对话。他可以选择一个或多个同伴并向选定的用户发送邀请。

然后,当用户向另一个人发送邀请时,我必须在我的数据库中添加新的对话记录,并以某种方式通知该用户邀请。我怎样才能做到这一点?我应该使用 PubNub 的推送通知吗?如here 所述,我必须注册我的应用程序才能获得推送通知,然后我才能向频道发送通知。但是如果用户还没有订阅这个频道,他将如何收到这个通知呢?我卡在这里了。

【问题讨论】:

  • 这更像是一个设计讨论而不是一个问题。为此,我建议联系 PubNub,与客户成功经理和架构师讨论最佳实践。只需发送请求 support@pubnub.com。快速回答您的最后一个问题 - “但是如果用户尚未订阅此频道,他将如何收到此通知?” - 每个用户都会订阅他们自己的“私人频道”(可能基于他们的用户名)。此通道名称是您的应用程序众所周知或已知的公开(在幕后,而不是视觉上)。在用户的私人频道上发送邀请。

标签: ios swift apple-push-notifications pubnub


【解决方案1】:

首先,关于聊天以及如何构建它、如何构建频道等有很多不同的方法。为了更好地阅读替代方案,我建议使用inbound channel pattern to descrease history API calls。本文讨论了一些减少频道混乱的有趣方法,但我将继续讨论您当前的设计。

就当前设计的处理方式而言,每个用户都应始终为该用户订阅一个独特的频道。通过这种方式,您可以使用此频道向用户“发出信号”(向他们的频道发布消息),这可以促进许多工作流程:

  • 收到新的对话邀请(以便他们回复)
  • 接收要订阅的新频道
  • 删除对话(如果可能的话)

流控制器和频道组

您还可以使用Stream Controller add-on,为每个用户创建一个Channel Group。频道组也可以被认为是订阅组,因为它是您订阅的一组频道(您不能发布到频道组,只能发布到频道)。使用这一点,在用户客户端,他们将始终订阅他们唯一的频道组,在该组中将拥有唯一的用户频道,以及他们将订阅的所有其他对话频道。

在这种情况下,用户 1 将向用户 2 发送邀请加入对话(服务器将其发布到用户 2 的唯一频道),用户 2 回复服务器,如果他们接受, 服务器 然后将新的对话频道添加到用户 1 和用户 2 的频道组中!在客户端,用户实际上都不需要更改任何内容,因为他们已经订阅了他们的频道组。

【讨论】:

  • hai 如何在 ios 中将用户添加到我的聊天中
  • 订阅用户需要聊天的频道。
  • 如何在ios中将多个用户添加到同一个频道?不然怎么加群聊
  • 每个用户订阅同一个频道并发布到该频道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2014-02-13
相关资源
最近更新 更多