【发布时间】:2020-04-12 21:43:48
【问题描述】:
想象一下我们有使用 websocket 的聊天服务。我们以 JSON 格式发送消息,属性为 request_id。服务器捕获我们的消息,将其保存到数据库并返回消息的id,方法是使用传递的request_id 将另一个数据发送回客户端。客户必须找出这个“响应”到底与什么“请求”相关,并将数据保存到本地数据库。
例如:
- 客户端发送消息:
{
"request_id": "1st",
"content": "first message"
}
- 服务器收到消息,保存并返回新消息的id
{
"request_id": "1st",
"message_id": 123242139857814
}
与 Alammofire(使用闭包)不同,Starscream 库不提供这种机制。我正在寻找与 CoreData 和 RxSwift 兼容的解决方案。如何在不丢失“请求”上下文的情况下处理服务器的“响应”?
【问题讨论】:
-
您确定您了解 WebSocket 的工作原理吗?由于您在请求和响应中都有 request_id ,因此找到相关的没有问题,不是吗?
-
@Dialogue 是的,我是。我有 2 条消息(发送和接收)具有相同的
request_id,并且在收到新消息时我可以找到相关请求。这意味着我必须通过处理程序保留请求(或ids)。如何编写具有处理程序或属性的此类?你能给我这个语法的例子吗? -
是的,当然,下面是一个例子
标签: swift starscream