WebSocket Masked Messages

· 기능

sgcWebSockets 4.4.8부터 WebSocket 메시지 로그개선됐어요. 이전에는 소켓이 송수신한 그대로 메시지가 저장됐는데, WebSocket 클라이언트가 메시지를 보낼 때 먼저 마스킹된 후 로그에 저장됐어요. 메시지가 마스킹되어 있어 쉽게 읽을 수 없었기 때문에, 클라이언트가 보낸 WebSocket 메시지 로그(및 서버가 수신한 WebSocket 메시지)는 사실상 쓸모가 없었어요.

이제 WebSocket 프레임이 기본적으로 마스킹 해제된 상태로 저장돼요(이 동작은 LogFile.UnMaskFrames 속성으로 변경할 수 있어요). 클라이언트가 메시지를 보내면 마스킹 해제된 상태로 저장되고, 서버가 WebSocket 메시지를 수신할 때도 마스킹 해제된 상태로 저장돼요(서버의 경우, 여러 프로토콜을 처리할 수 있고 버퍼를 읽을 때 프로토콜을 알 수 없기 때문에 마스킹된 버전과 해제된 버전 모두 저장돼요).

WebSocket 클라이언트 마스킹 메시지

이 변경 전에는 보낸 WebSocket 메시지가 마스킹된 상태로 저장되어, 텍스트를 읽을 수 없었어요.

Stat Connected.
Sent 24/02/2021 10:59:01: GET / HTTP/1.1
Host: www.esegece.com:2053
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: hKokOwscWkDOF6Y3liZ2yA==
Origin: www.esegece.com:2053
Sec-WebSocket-Version: 13
Recv 24/02/2021 10:59:01: HTTP/1.1 101 Web Socket Protocol Handshake
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol
Access-Control-Allow-Origin: www.esegece.com:2053
Connection: Upgrade
Date: Wed, 24 Feb 2021 09:56:07 GMT
Sec-WebSocket-Accept: pgtoE2wbo/G1uvjCN/CX7N6OltE=
Server: Kaazing Gateway
Upgrade: websocket
Sent 24/02/2021 10:59:07: œoŽ´'zâØ ?èÆ r®Ç|ÙÑ
Lá×zúÇN>¯•
Recv 24/02/2021 10:59:07: Hello from sgcWebSockets!!!!
Stat Disconnected.
Stat Disconnected.
Stat Disconnected. 

WebSocket 클라이언트 마스킹 해제 메시지

아래에서 보낸 메시지가 마스킹되지 않은 로그를 확인할 수 있어요.

Stat Connected.
Sent 24/02/2021 11:00:16: GET / HTTP/1.1
Host: www.esegece.com:2053
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: wSZGb+0KEUZacGDFcz47gg==
Origin: www.esegece.com:2053
Sec-WebSocket-Version: 13
Recv 24/02/2021 11:00:16: HTTP/1.1 101 Web Socket Protocol Handshake
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol
Access-Control-Allow-Origin: www.esegece.com:2053
Connection: Upgrade
Date: Wed, 24 Feb 2021 09:57:22 GMT
Sec-WebSocket-Accept: WtGNEtct4WtQ5SAs/PWmvjspj6c=
Server: Kaazing Gateway
Upgrade: websocket
Sent 24/02/2021 11:00:21: [text] Hello from sgcWebSockets!!!!
Recv 24/02/2021 11:00:21: Hello from sgcWebSockets!!!!
Stat Disconnected.
Stat Disconnected.
Stat Disconnected.