我如何通知一个客户端另一个客户端使用 websocket 发起的请求?

How can I notify a client of a request initiated by another client with websocket?

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

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

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

收到行程请求时,我会创建一个 session 和一个 ID 为 session 的行程 object。当 driver 访问应用程序中的 "Trip requests" 选项卡时,他会发出获取请求以检索活动的旅行请求。然后,当他单击其中一个旅行请求时,他将使用要添加到 session.

的特定旅行的 session id 发出请求

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

另一个问题是,在 driver 接受他们的请求之前,用户必须无限期地等待。

是否有更好的方式通知 driver 旅行请求?我怎样才能实现这一目标?

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

我建议您为 trips/trip 请求实施某种 REST API。要通知 driver 或将更新发送回用户,您可以使用推送通知(iOS 是 APNS)或 websockets。在不同情况下的最佳情况下。

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

希望对您接下来的步骤有所帮助。你的问题很笼统,需要更具体。