我正在开发基于套接字的软件。客户端提出问题,服务器回答问题,我遇到了一些问题。
客户问一个"问题"到服务器,服务器可能会收到"问题" 2分钟后。然后客户可以询问"问题"在第一次询问后1分钟再一次。那么如何避免服务器回答两次?
如果服务器应答客户端,则客户端可能会因网络延迟而立即收到答复。所以客户端可能会再次询问服务器。服务器收到问题,然后再次回答。
此应用程序是否有任何良好的通信协议/规则?
答案 0 :(得分:0)
为避免发送重复的答案,您可以使用随机数。选择一个整数并将其与问题数据一起发送到服务器。在回答时,服务器会将相同的整数附加到它的答案中。客户端应该删除所有收到的带有重复的nonce值的答案。
答案 1 :(得分:0)
如果您以某种方式存储问题服务器端,那么应该很容易检查最后提出的问题,这样您就可以避免两次发送或接收问题。除非您的服务器资源非常有限,或者您拥有大量流量,否则此解决方案应该适合您。
您也可以为网站的每个访问者提供一个ID,并以易于搜索的格式存储每个ID的问题并查找可能的重复项。
对于协议,基本HTTP或Websocket是用于来回发送请求的良好协议。
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API