크롬 클라이언트의 백본 컬렉션에 대한 모델 변경을 스트리밍하는 웹 앱이 있습니다. 업데이트 유형과 검토 대상에 따라 페이지의 일부를 렌더링 할 수도 있고 렌더링하지 않을 수도있는 몇 가지 백본보기가 있습니다. 예를 들어, 모델에 대한 일부 변경 사항은 다시 렌더링되는 컬렉션에 대한 뷰가되고 업데이트되는 모델에 대한 상세 패널 뷰가 열릴 수도 있고 그렇지 않을 수도 있습니다. 이러한 모델 변경은 서버 측 워크 플로가 모델에 대해 매우 상세하고 신속한 변경을 필요로하므로 매우 빠르게 발생할 수 있습니다.스로틀 웹 소켓 연결에 대해 선호되는 방법은 무엇입니까?
다음과 같은 문제가 있습니다. WebSocket 연결이 아직 끝나고 readyState
이 여전히 1 (OPEN)이지만 클라이언트에 메시지를 보낼 때 웹 서버 프로세스에서 많은 수의 errno 파이프 깨짐 메시지가 나타납니다.
나는 무슨 일이 일어나고 있는지 알기 위해 다음 메시지가 들어올 때까지 다양한보기가 onmessage
콜백에서 렌더링을 완료하지 못했다. stdout에서 이러한 추적을 얻은 후에도 websocket 연결은 계속 작동 할 수 있으며 UI는 여전히 업데이트됩니다.
eventlet.sleep(0.02)
을 메시지 대기열에서 모델 변경 사항을 읽고 websocket에 보내는 루프에 넣으면 깨진 파이프 메시지가 사라지지만 실제 솔루션은 아니며 불쾌한 해킹처럼 느껴집니다.
websocket의 onmessage
기능이 너무 많은 작업을하고 다음 메시지가 수신 될 때 여전히 바쁘다는 비슷한 문제가있는 사람이 있습니까? 누구나 해결책이 있습니까?