Model view controller Node.js Adonis:如何将多个控制器吸引到一个websocket通道?

Model view controller Node.js Adonis:如何将多个控制器吸引到一个websocket通道?,model-view-controller,websocket,adonis.js,Model View Controller,Websocket,Adonis.js,我有一个简单的项目,基于Node.js框架,名为“Adonis”。我想用这个框架创建一个更简单的多人游戏。我创建了一个websocket频道,可以在玩家和服务器之间发送和接收数据。然后,我已将新控制器连接到此频道: const Ws = use('Ws') Ws.channel('channelName', 'channelNameController') 问题是,用户发送的数据非常多样化。玩家可以执行各种动作。(例如,玩家可以攻击其他玩家,他们可以从其他玩家那里购买物品,他们可以在游戏板上移

我有一个简单的项目,基于Node.js框架,名为“Adonis”。我想用这个框架创建一个更简单的多人游戏。我创建了一个websocket频道,可以在玩家和服务器之间发送和接收数据。然后,我已将新控制器连接到此频道:

const Ws = use('Ws')
Ws.channel('channelName', 'channelNameController')
问题是,用户发送的数据非常多样化。玩家可以执行各种动作。(例如,玩家可以攻击其他玩家,他们可以从其他玩家那里购买物品,他们可以在游戏板上移动等等)

我想保持只有一个插座通道打开,使连接简单。但是,我需要在一个控制器中处理来自玩家的所有数据

是否可以使用Adonis框架将多个控制器连接到一个websocket通道

如果不可能,我需要在控制器中用一种方法处理所有可能的玩家动作:

(伪代码)

简言之 我认为不能将多个控制器连接到一个web套接字通道。 然而,您想在这里做的事情似乎是可行的,就像您在伪代码中做的一样,或者更确切地说,通过发送不同的事件(我建议这样做)

客户 服务器 简言之 我认为不能将多个控制器连接到一个web套接字通道。 然而,您想在这里做的事情似乎是可行的,就像您在伪代码中做的一样,或者更确切地说,通过发送不同的事件(我建议这样做)

客户 服务器
onMessage(message) {
  switch message.type:
   case 'player-moved':
     // do something...
     break;
   case 'player-attack':
     // do something...
     break;
 //...
 }
socket.emit('attack', {player: foo, force: bar})
...
...
socket.emit('buy', {player: foo, item: 25}
onAttack(data){
  doSomethingWith(data);
}

onBuy(data){
  doSomethingElseWith(data);
}