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

问题描述 投票:1回答:1

我是一般软件开发的新手,我正在编写一个简单的乘坐共享iOS应用程序的后端(我将在后面开发)。我正在使用Vapor来创建后端。

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

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

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

我在上面的解决方案中看到的问题是,这会使用户成为海报,而驱动程序是观察者,我不确定是否可行,因为我希望驱动程序充当海报(发送位置更新,以便用户可以实时跟踪地图上的驱动程序)。

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

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

websocket client-server real-time api-design vapor
1个回答
2
投票

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

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

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

我希望这有助于您的下一步。你的问题相当广泛,更具体。

© www.soinside.com 2019 - 2024. All rights reserved.