2017-01-11 4 views
0

소켓 기반 소프트웨어를 개발 중입니다. 클라이언트가 질문을하고 서버가 질문에 대답하고 몇 가지 문제점이 있습니다.서버와 클라이언트 간의 소켓 통신을위한 좋은 통신 프로토콜/규칙이 있습니까

  1. 클라이언트가 서버에 "질문"을 요청, 서버 2 분 후 "질문"을받을 수 있습니다. 그런 다음 클라이언트는 처음 질문 한 후 1 분 후에 "질문"을 다시 한 번 물을 수 있습니다. 그렇다면 서버 응답을 두 번 피하는 방법은 무엇입니까?

  2. 서버가 클라이언트에 응답하는 경우 네트워크 지연으로 인해 클라이언트가 즉시 응답을받을 수 있습니다. 따라서 클라이언트는 서버에 다시 한 번 물을 수 있습니다. 서버가 질문을받은 다음 다시 응답합니다.

  3. 이 애플리케이션에 적합한 통신 프로토콜/규칙이 있습니까?

+0

클라이언트가 현재 얼마나 많은 응답을 기대합니까? – Jasen

답변

0

중복 답변을 보내지 않으려면 1 단계를 사용할 수 있습니다. 정수를 선택하고 질문 데이터와 함께 서버로 보냅니다. 응답 할 때 서버는 응답과 동일한 정수를 첨부합니다. 클라이언트는 nonce 값이 중복 된 모든 수신 된 응답을 삭제해야합니다.

0

어떻게 든 질문을 서버쪽에 저장하면 질문을 마지막으로 확인하는 것이 쉬워 져야합니다. 그러면 질문을 두 번 보내거나받는 것을 피할 수 있습니다. 서버 리소스가 매우 제한적이거나 트래픽이 많은 경우가 아니라면이 솔루션을 사용해야합니다.

사이트의 각 방문자에게 ID를 제공하고 각 ID의 질문을 쉽게 검색 할 수있는 형식으로 저장하여 가능한 중복을 찾을 수도 있습니다.

프로토콜의 경우 기본 HTTP 또는 Websocket은 요청을 앞뒤로 보내는 좋은 프로토콜입니다.

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