websocket をベースにした Node.js/Express でアプリケーションを作成しています。私は Node の EventEmitter を socket.io と組み合わせて使用して、ほぼ完全にイベント駆動型のアプリを作成しています。
これは良いアーキテクチャなのだろうか。現在、私のメイン ソケットは app.js で管理されており、次のようなコードがあります。
socket.on(Events.InitialFetch, function(battle_id){
dispatcher.emit(Events.InitialFetch, battle_id);
});
dispatcher.on(Events.InitialFetched, function(data){
socket.emit(Events.InitialFetched, data);
});
...コントローラー内では、次のようなコードがあります。
dispatcher.on('initial-fetch', function(data){
Battle.findOne({_id: data})
.populate('players')
.populate('owner')
.exec(function(err, battle){
if (err) {
}
else {
dispatcher.emit(Events.InitialFetched, battle);
}
});
});
通常の RESTful ルーティングの代わりに。私の懸念は、少し紛らわしい (つまり、データ フローを説明するための 'fetch' と 'fetched') ことと、基本的に 1 つのタイプのイベント エミッター (socket.io) から別のタイプ (Event.EventEmitter) にメソッドを渡しているという事実です。 .
どうすればこれをより適切に設計できますか? EventEmitter をバスとして使用するのではなく、コントローラがソケットに直接アクセスできるようにしたほうがよいでしょうか? イベントの名前をより明確にするにはどうすればよいですか?