문제

가능합니까?주어진 요청에 대한 응답을 제공하기 위해 http.sys에서 사용하는 기본 소켓에 액세스 할 수 있습니까?포트 80에서 http 프로토콜을 통해 전이중 통신을 지원하고 싶습니다.

현재 요청에 대해 설정된 소켓을 잡고 전이중 통신을 위해 유지하는 방법이 있습니까?

내 사용 사례는 웹 소켓입니다.웹 소켓의 핸드 셰이크는 실제로 유효한 http 요청이며 업그레이드를 위해 웹 서버를 재사용하고 싶습니다.클라이언트 시스템에서 다른 포트가 열리지 않을 수 있으므로 포트 80이 중요합니다.

어떤 대안이라도 감사합니다.

도움이 되었습니까?

해결책

http.sys를 사용하면 기본 소켓에 액세스 할 수 없습니다. http 요청을 처리하고 조각 (조각 캐시, 메모리 또는 파일)에서 응답을 작성할 수 있습니다. 사용 된 소켓을 완전히 제어해야하는 경우 (http 요청으로 시작하고 나중에 "secret-websocket-handshake"가 지원되지 않은 후 websocket 소켓으로 업그레이드하십시오.

할 수있는 일은 전이중 시스템과 같은 로켓을 사용하는 것입니다. 클라이언트는 HTTP 1.1 연결 유지 소켓을 사용하여 요청을 게시하고 http.sys 서버가 이러한 요청을 수신하면 서버에서 클라이언트로 트리거 된 데이터를 사용할 수 있거나 시간 초과가 발생할 때까지 응답을 연기 할 수 있습니다. 이것은 웹 소켓만큼 강력하지는 않지만 합리적으로 잘 수행되며 서버 반응 시간에 1 ~ 2ms 만 추가합니다 (적어도 내 테스트에서는). 유일한 문제는 누군가가 브라우저에서 서버에 대해 여러 페이지를 열고 브라우저가 페이지가 단일 http 요청을 공유하도록 할 때 발생합니다.이를 위해 최대 폴링을 최대한 낮게 유지하여 훨씬 더 많은 웹 트래픽을 생성했습니다.

다른 옵션은 "socket-code"에서 직접 websocket을 수행하고 "http.sys-code"를 사용하여 http 요청을 수행하는 것입니다. 이것은 또한 합리적으로 잘 작동하지만 코드를 더 복잡하게 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top