WebSocket マスクメッセージ

· 機能

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: echo.websocket.org
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: hKokOwscWkDOF6Y3liZ2yA==
Origin: echo.websocket.org
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: echo.websocket.org
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: echo.websocket.org
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: wSZGb+0KEUZacGDFcz47gg==
Origin: echo.websocket.org
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: echo.websocket.org
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.