그래서 내 응답이 클라이언트에 성공적으로 전달되었음을 알 수 있습니다. 우리의 API (php/yii)에 POST 요청을 보내는 약 20 개의 POS 시스템 (dot.net 및 java와 같은 다른 기술로 작성)이 있습니다. 우리가 알고 자하는 요청에 응답 할 때 성공적으로 전달 된 응답입니다. 고객에게 요금을 청구 할 때 상황이 발생할 수 있기 때문에 POS가이를 알지 못하고 미발표 상태로 머물 수 있기 때문에이 정보가 필요합니다. POS가 다른 요청을 보내고 POS 코드가 엉망이 될 수 있는지 확신 할 수 없습니다. 응답이 전달되지 않는다는 것을 알게되면 청구를 취소 할 수 있습니다. 기본 POST 요청으로 가능합니까? 내가 말했듯이 우리 프로젝트는 PHP로되어 있지만 다른 언어로 된 코드 스 니펫이나 문서도 허용됩니다. 미리 감사드립니다.내 POST 응답이 클라이언트에 전달됩니까
답변
이것은 Two Generals' Problem이며 이러한 유형의 질문에 대한 일반적인 정답은 없습니다. 그러나 연락이 없으면 중요한 행동을 유도/금지하지 않고 승인의 재전송/재 요청 만하는 수준에서 대화를 진행해야합니다.
여기서는 적절한 선택의 여지가 없습니다. 더 좋은 방법은 일단 서버가 트랜잭션에 대한 완전한 요청을 받으면 실행되도록하는 것입니다. 고객의 상태와 상관없이 POS가 응답을받지 못하면, 동일한 고유 ID로 트랜잭션을 재 시도하므로 서버는 두 번째 시간을 무시하고 완료했다고 말할 수 있습니다. 분산 시스템에서 트랜잭션이 발생하는 경우이기 때문에 서버의 지식을 기본적이고 안전한 것으로 취급하고 클라이언트를 안개 속으로있게하는 것이 더 적합합니다. POS가 안개에서 벗어날 수 없으면 재 시도해야합니다. 물론 이것은 매우 난장판 인 POS 코드 (현재는 견고 함의 개념과 관련하여 디자인이 망가졌습니다)를 "엉망으로 만들 수는없는"설계로는 어려움이 있습니다.
당신이 (기본 연결을 모니터하기 위해) 여러 가지 이유로 작동하지 않습니다 달성하기 위해 노력하고있다 : 연결이 응답을받을 때 폐쇄 할 수 있도록 설계되어
- ; 이것은 IP 레벨 이상의 종료와 가장 일반적으로 구별 할 수 없습니다.
- HTTP는 메시지 도착 보증을 위해 설계되지 않았습니다 (즉, "정상적으로 요청 닫기"명령이 없습니다). 이것이 HTTP가 나쁜 이유입니다
- 이전 포인트가 모두 존재하지 않는다면 PHP + webserver가 좋지 않습니다. PHP를 계속 실행하는 것은 어렵습니다 (예 : 연결이 닫힌 후 모든 상태를 검사하는 것). 요청을 제공하고 나서 잊어 버리도록 설계되었습니다.
이것은 정확히 내가 생각한 것입니다. 이 위대한 대답에 감사드립니다. –
- 1. Node.js : 응답이 올바른 사용자에게 전달됩니까?
- 2. Java - HttpServlet : 응답이 클라이언트에 언제 전송됩니까?
- 3. Jquery ajax POST 응답이 null입니다.
- 4. SOAP 요청 및 응답이 HTTP를 통해 직렬화 된 객체로 전달됩니까
- 5. HTTP POST 응답이 올바르게 전달되지 않았습니다.
- 6. jQuery .ajax() 및 .post() 응답이 없습니다.
- 7. 봄 통합 HTTP 아웃 바운드 게이트웨이 POST 응답이 원래 POST 응답이 수신 앰퍼샌드
- 8. 내 htaccess로 대신 POST
- 9. JQuerys .post()를 사용하여 응답이 없습니다.
- 10. HTTP POST 메서드 응답이 오류와 함께 발생합니다.
- 11. 왜 내 컨트롤러에 처분 된 UserManager가 전달됩니까?
- 12. iOS 제어 센터의 터치가 내 스크롤보기로 전달됩니까?
- 13. HttpResponseException을 던지면 항상 StatusCode : 500 응답이 클라이언트에 발생합니다.
- 14. 응답이 클라이언트에 전송 된 후 Django에서 코드 실행
- 15. 보안 모드 TransportWithMessageCredential을 사용하여 pollingDuplexHttpBinding. 서버의 응답이 클라이언트에 도착하지 않습니다.
- 16. WCF basicHttpBinding : 클라이언트에 대한 응답이 실패 할 때 롤백
- 17. 서블릿은 : 응답이 코드가 내 서블릿에서
- 18. 내 클라이언트에 GAC 폴더가 없습니다.
- 19. 보내기 응답이
- 20. Django의 TemplateView에서 양식 오류가 전달됩니까?
- 21. RenderBody의 ViewBag가 전달됩니까?
- 22. 웹 서비스 응답이 내 서버에서 반환되지 않습니다
- 23. JSON 응답이
- 24. POST 요청에 Content-length 헤더 응답이 필요합니다 (411 오류)
- 25. 배열은 어떻게 전달됩니까?
- 26. Xcode에서보기 컨트롤러간에 데이터가 전달됩니까?
- 27. hadoop은 어떻게 참조로 전달됩니까?
- 28. 어떤 종류의 인수가 전달됩니까?
- 29. 인수는 값으로 전달됩니까?
- 30. 알림은 Java에서 어떻게 전달됩니까?
저는 이것이 클라이언트 측 코드를 수정하지 않고는 이루어질 수 없다고 생각합니다. – Don
나도 그렇게 생각한다.하지만 물어볼 필요가있다. 모든 포스트 요청이 소켓 연결 일종이며, 제대로 연결이 끝났거나 중간에 중단되었다고 판단 할 수있다. –