Jetty는 org.eclipse.jetty.websocket.common.BlockingWriteCallback을 사용하여 websocket을 통해 메시지를 보냅니다. 클라이언트가 "느린"경우 블로킹 쓰기가 중단 될 수 있습니다 (예 : https://github.com/eclipse/jetty.project/issues/272#issuecomment-290910610 참조)WebSocket 보내기 비 블로킹
나는 Jetty + Spring + Spring의 Websocket Client를 사용하여 느린 클라이언트를 성공적으로 시뮬레이션합니다.
websocket 메시지를 "보내고 잊어 버리고 싶습니다."클라이언트가 느린 경우 (어떤 확인을 시도하든) BrokerWriteCallback의 해결에는 영향을 미치지 않습니다. Jetty (구성 또는 소스 코드 편집)를 통해이를 달성하는 가장 좋은 방법은 무엇입니까
현재 Jetty 버전 9.3.11.v20160721은 Spring 4.3.3과 함께 사용됩니다.
고맙습니다! 당신이 문제가있는 부분에 대해 자세히 설명해 주시겠습니까? 콜백을 사용하여 sendString을 가정합니다. 클라이언트가 메시지를 받거나 "네트워크에 기록"되었을 때 콜백이 반환되지만 클라이언트로부터 확인을받지 못합니까? 솔직히 말해서 저레벨 통신이 얼마나 정확하게 작동하는지 아직 알지 못하며, 이것에 대한 유용한 통찰력을 높이 평가합니다. 클라이언트가 "정지"하면 (수신 실패) 스레드가 차단됩니다. 나는 내 프로그램이 다른 클라이언트에게 데이터를 보낼 수 있기를 원한다. 현재 특정 이유로 단일 스레드 전송을 사용합니다 (단 하나의 스레드가 부두를 호출합니다) –