如何通过websocket将另一个客户端发起的请求通知客户端?

时间:2019-02-14 14:09:47

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

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

当用户向API提出行程请求时,我想创建一个新行程并在用户和驾驶员之间建立一个websocket会话。我遇到的问题是如何通知驱动程序请求已存在并将其添加到会话中?

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

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

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

另一个问题是,用户必须无限期地等待驾驶员接受他们的请求。

是否有更好的方式将行程请求通知驾驶员?我该如何实现呢?

1 个答案:

答案 0 :(得分:2)

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

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

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

我希望对您的下一步有所帮助。您的问题很广泛,更具体。