服务器和客户端之间的套接字通信是否有良好的通信协议/规则

时间:2017-01-11 09:26:53

标签: sockets protocols communication

我正在开发基于套接字的软件。客户端提出问题,服务器回答问题,我遇到了一些问题。

  1. 客户问一个"问题"到服务器,服务器可能会收到"问题" 2分钟后。然后客户可以询问"问题"在第一次询问后1分钟再一次。那么如何避免服务器回答两次?

  2. 如果服务器应答客户端,则客户端可能会因网络延迟而立即收到答复。所以客户端可能会再次询问服务器。服务器收到问题,然后再次回答。

  3. 此应用程序是否有任何良好的通信协议/规则?

2 个答案:

答案 0 :(得分:0)

为避免发送重复的答案,您可以使用随机数。选择一个整数并将其与问题数据一起发送到服务器。在回答时,服务器会将相同的整数附加到它的答案中。客户端应该删除所有收到的带有重复的nonce值的答案。

答案 1 :(得分:0)

如果您以某种方式存储问题服务器端,那么应该很容易检查最后提出的问题,这样您就可以避免两次发送或接收问题。除非您的服务器资源非常有限,或者您拥有大量流量,否则此解决方案应该适合您。

您也可以为网站的每个访问者提供一个ID,并以易于搜索的格式存储每个ID的问题并查找可能的重复项。

对于协议,基本HTTP或Websocket是用于来回发送请求的良好协议。

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API