問題を解決する最も簡単な方法は、ルーティングモジュールと組み合わされたフレームワークを使用することです。これにより、余分な労力を費やすことなくコードを管理するメッセージ管理の管理が可能になります。
このような組み合わせの良い例は、express-ws moduleで表されます。 Express-wsはwsモジュールの上に構築された構文的な砂糖です。とりわけ、ルータのミドルウェアを使ってメッセージを管理することができます。
ws.on('message', function(msg) {
MessageController.handler(msg);
});
次のステップでは、一つの巨大なファイルを持っていないために事業領域に応じて、別々のファイルにあなたのルートを壊すことになります。
const expressWs = require('express-ws')(app);
const router = express.Router();
router.ws('/echo', function(ws, req) {
ws.on('message', function(msg) {
ws.send(msg);
});
});
app.use("/ws-stuff", router);
また、あなたは、このような「コントローラ」にロジックを扱うメッセージを移動することができますすべてのルーティングで
私が理解する限り、ルーティングパターンは複数の異なるエントリポイント(wsアドレス)を持つためのものです。私の問題は、1つのエントリポイント(wsアドレス)に対して明確なアーキテクチャを持っていますが、100種類以上の異なる種類のメッセージを持つことです。 2番目のアプローチは、私が探しているものに似ています。しかし、このハンドラがwsオブジェクトにどのように届くのでしょうか?それをパラメータとして渡す必要がありますか?もしそうなら、コントローラー内にwebsocketサーバーオブジェクトが必要ですか?だから、私もサーバーを渡す必要がありますか? (コントローラ内の他のクライアントにアクセスするため) –