websocket - 如何使用 websocket 通知客户端另一个客户端发起的请求?
问题描述
一般来说,我是软件开发的新手,我正在为一个简单的拼车 iOS 应用程序(我稍后会开发)编写一个后端。我正在使用 Vapor 创建后端。
当用户向 API 发出行程请求时,我想创建一个新行程并在用户和司机之间建立一个 websocket 会话。我遇到的问题是如何通知司机有请求并将他添加到会话中?
到目前为止,这是我想出的,尽管我不确定它是否会起作用:
当一个行程请求进来时,我会创建一个会话和一个带有会话 ID 的行程对象。当司机访问应用程序中的“旅行请求”选项卡时,他会发出获取请求以检索活动的旅行请求。然后,当他单击其中一个行程请求时,他将使用该特定行程的会话 ID 发出请求,以将其添加到该会话中。
我在上述解决方案中看到的问题是,这将使用户成为海报,而司机成为观察者,我不确定这是要走的路,因为我希望司机充当海报(发送位置更新,以便用户可以在地图上实时跟踪司机)。
另一个问题是,在司机接受他们的请求之前,用户必须无限期地等待。
有没有更好的方法来通知司机行程请求?我怎样才能实现这一目标?
解决方案
首先,尝试在用户和驱动程序之间建立直接连接时会遇到麻烦,因为直接连接到智能手机上的应用程序非常困难(更改 IP、NAT、防火墙和开放端口是其中的一些问题)。
我建议,您为旅行/旅行请求实现某种REST API 。要通知驱动程序或将更新发送回用户,您可以使用推送通知(对于 iOS,它是 APNS)或 websockets。在最好的情况下,两者都适用于不同的情况。
以下是有关这些主题的进一步研究的一些提示:
- WebSockets:在 Vapor中,一个使用 websockets 的示例聊天应用程序,Vapor 的 WebSocket 包装器
- 推送通知:Gorush,推送通知服务器,Apple Notifications,(WIP:NIO 上的 APNS)
我希望这对您接下来的步骤有所帮助。你的问题很广泛,更具体。
推荐阅读
- python - 在 C/C++ 中重写利用 websocket 和 struct 和 numpy 的 python 代码片段
- javascript - 如何在 Nuxt 中使用一个组件创建无限路由
- javascript - Angular 输入框值输入限制
- sql - 无法让 SUM 函数与我的查询一起使用
- python - 如何使用 finnhub 从不同的证券交易所(ASX - 澳大利亚证券交易所)提取股票
- c# - 我如何在 Theory inlinData 中使用 hashSet
- python-3.x - 有没有办法在满足特定条件时立即停止 Scrapy 蜘蛛
- python - 在dict中使用默认值获取None
- graphql - 授权strapi graphql端点
- javascript - 访问字典数组中的元素