我在服务器上运行了一个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以捕获新消息并存储它们吗?
答案 0 :(得分:5)
您确实没有描述您的应用程序的要求,因此我们很难直接建议您的应用程序应该做什么。你真的不应该通过说你有一个webSocket来开始你的分析,而你正在试图弄清楚如何处理它。相反,请列出您的应用程序的要求,并找出最能满足这些要求的技术。
由于您的要求不明确,我将谈谈最适合使用webSocket的内容以及最常用的传统http请求。
以下是webSocket的一些特征:
所以,这里有几个典型的原因可以让你选择其中一个。
您可能还会发现这些其他帖子很有用:
What are the pitfalls of using Websockets in place of RESTful HTTP?
What's the difference between WebSocket and plain socket communication?
Push notification | is websocket mandatory?
How does WebSockets server architecture work?
对您的修改的回复
但似乎websocket必须与API分开运行, 我的意思是它的另一个项目对吗?因为它不适用于HTTP请求
支持API的相同过程也可以为webSocket连接提供服务。因此,当您在webSocket上获取传入数据时,您可以直接将其写入数据库,就像API访问数据库一样。所以,不,webSocket服务器不必是一个单独的程序或进程。
因此,API也应该监听此websocket以捕获新消息 并存储它们?
不,我不这么认为。只有一个进程可以侦听一组传入的webSocket连接。