【问题标题】:How can I notify a client of a request initiated by another client with websocket?如何使用 websocket 通知客户端另一个客户端发起的请求?
【发布时间】:2019-07-08 14:17:34
【问题描述】:

我是一般软件开发的新手,我正在为一个简单的拼车 iOS 应用程序(我稍后会开发)编写后端。我正在使用 Vapor 创建后端。

当用户向 API 发出行程请求时,我想创建一个新行程并在用户和司机之间建立一个 websocket 会话。我遇到的问题是如何通知司机有请求并将他添加到会话中?

这是我到目前为止的想法,虽然我不确定它是否会起作用:

当一个行程请求进来时,我会创建一个会话和一个带有会话 ID 的行程对象。当司机访问应用程序中的“旅行请求”选项卡时,他会发出获取请求以检索活动的旅行请求。然后,当他单击其中一个行程请求时,他将使用该特定行程的会话 ID 发出请求,以将其添加到该会话中。

我在上述解决方案中看到的问题是,这会使用户成为海报,司机成为观察者,我不确定这是要走的路,因为我希望司机充当海报(发送位置更新,以便用户可以在地图上实时跟踪司机)。

另一个问题是用户必须无限期地等待驱动程序接受他们的请求。

有没有更好的方法来通知司机行程请求?我怎样才能实现这一目标?

【问题讨论】:

    标签: websocket client-server real-time api-design vapor


    【解决方案1】:

    首先,尝试在用户和驱动程序之间建立直接连接时会遇到麻烦,因为直接连接到智能手机上的应用程序非常困难(更改 IP、NAT、防火墙和打开端口是其中的一些问题) .

    我建议,您为旅行/旅行请求实施某种REST API。要通知驱动程序或将更新发送回用户,您可以使用推送通知(对于 iOS,它是 APNS)或 websockets。在最好的情况下,两者都适用于不同的情况。

    以下是对这些主题的进一步研究的一些提示:

    我希望这对您接下来的步骤有所帮助。您的问题非常广泛,更具体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多