【发布时间】:2016-09-11 03:21:00
【问题描述】:
我有一个在服务器上运行的 API,它处理用户连接和消息传递系统。
除此之外,我在同一台服务器上启动了一个 websocket,等待连接和其他东西。
假设我们可以通过 Android 应用访问它。
我很难弄清楚我现在应该做什么,以下是我的想法:
1 - 当用户连接到应用程序时,API 连接到 websocket。我们只允许 Android 应用程序侦听此套接字以获取新消息。当用户想要回答时,Android 应用会向 API 发送一条消息。 API 将接收到的消息写入到套接字中,该套接字将由另一个用户使用的 Android 应用程序读回。 这样,API 可以在将消息写入套接字之前将其存储在数据库中。
2- API 不会以任何方式连接到 websocket。 Android 应用在需要时侦听和写入 websocket,并且在写入 websocket 时还应该向 API 发送请求,以便它可以将消息存储在 DB 中。
可能以上都不是正确的,请告诉我
编辑
我已经明白为什么我应该使用 websocket,这似乎是拥有这个“实时”系统的最佳方式(例如在收到新消息时),而不是强制客户端每 x 秒发出一次 HTTP 请求检查是否有新消息。
我仍然不明白,它是如何与我的数据库进行通信的。对不起,如果我的例子不清楚,但我会继续努力:
我的消息系统需要将所有消息存储在我的 API 数据库中,以获取某种对话历史记录。
但似乎 websocket 必须与 API 分开运行,我的意思是它是另一个程序,对吧?因为它不适用于 HTTP 请求
那么 API 是否也应该监听这个 websocket 来捕获新消息并存储它们?
【问题讨论】:
-
如果你不知道自己要做什么,为什么还要设置 websocket?
-
因为我知道我需要它以某种方式获得实时系统并避免客户端过于频繁地调用 API
-
您意识到 HTTP API 和 websocket 都可以(单独或通过某些中间件)与单个数据库通信吗?您似乎对实际发生的事情有点困惑,“API 是否也应该监听这个 websocket” 作为一个问题没有意义。
-
一点也不,我完全不知道这里发生了什么!哈哈,但是是的,好吧,它开始有意义了
标签: websocket api-design