私はCaddy ServerとWeb Socket Daemonをテストして、サーバー環境から WebSocket をサポートすることがどれほど簡単かを確認してきました。これらのソリューションはどちらも、選択したコマンド ライン プログラム (選択した任意の言語で記述) からの標準入出力を使用する抽象化です。
ただし、どちらのプログラムも行ベースです。つまり、コマンド ライン プログラムが改行文字を含む単一の「メッセージ」を標準出力に書き込む場合、JavaScript Websocket コードは 2 つの異なるメッセージを表示します。
この問題を回避する方法はありますか?
編集:非公式の回答として、改行の問題を回避するために複数のエンコーディングを実行できます。たとえば、コマンド ライン プログラムが JSON でエンコードされたデータで応答している場合、データを標準出力に書き込む前に単純に base64 でエンコードできます。atob()
JavaScript は、 JSON でデコードする前に、このデータを呼び出します。複数のエンコーディングを使用すると、わずかなサイズのオーバーヘッドが追加されますが、改行文字の問題 (およびその他の非印刷文字や制御文字に関する潜在的なその他の問題) は回避されます。