1
uWebSockets.jsおよびWebsocket-SharpでのWebsocket圧縮の使用
接続にwebsocketを使用するモバイルゲームがあります。サーバーはuWebSockets.jsライブラリを使用するNode.jsアプリで、クライアントはWebsocket-Sharpライブラリを使用するUnityアプリです。どちらも上手くプレイしており、問題は発生していません。 最近、WebSocket圧縮を有効にしたいと考えました。どちらのライブラリも、メッセージごとの圧縮の拡張をサポートしていると述べていましたが、互換性がないものがあるようです。圧縮を使用するように設定すると、WebSocket接続がハンドシェイクですぐに閉じるためです。 また、wsライブラリを使用してクライアントをテストしましたが、同じ結果の圧縮の例が提供されています。ws圧縮オプションをいじってみましたが、serverMaxWindowBitsオプション(デフォルトはネゴシエートされた値)をコメント化すると、接続が確立され、メッセージの送受信が問題なく機能することがわかりました。また、uWebsocketsでのserverMaxWindowBitsの制御についても質問しました。 最後に試みたのは、最小限のuWSサーバーとwebsocket-sharpクライアントを接続することでした。サーバーのコードは次のとおりです。 const uWS = require('uWebSockets.js'); const port = 5001; const app = uWS.App({ }).ws('/*', { /* Options */ compression: 1, // Setting shared compression method maxPayloadLength: 4 * 1024, idleTimeout: 1000, /* Handlers */ open: (ws, req) => { console.log('A WebSocket connected via URL: ' + req.getUrl() …