首页 > 解决方案 > 如何使用 websocket 通知客户端另一个客户端发起的请求?

问题描述

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

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

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

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

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

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

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

标签: websocketclient-serverreal-timeapi-designvapor

解决方案


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

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

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

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


推荐阅读