Node.js Adonis:如何将多个控制器附加到一个 websocket 通道?
Node.js Adonis: how to attrach multiple controllers to only one websocket channel?
我有一个简单的项目,基于名为 "Adonis" 的 Node.js 框架。我想使用这个框架创建一个更简单的多人游戏。我创建了一个 websocket 通道,可以在玩家和服务器之间发送和接收数据。然后我将新的控制器连接到这个频道:
const Ws = use('Ws')
Ws.channel('channelName', 'channelNameController')
问题是,用户发送的数据非常多样化。玩家可以执行各种动作。 (例如,玩家可以攻击另一个玩家,他们可以从另一个玩家那里买东西,他们可以在棋盘上移动等)。
我想只保留一个打开的套接字通道,以简化连接。但是,我需要在唯一的一个控制器中处理来自玩家的所有数据。
是否可以使用 Adonis 框架将多个控制器附加到一个 websocket 通道?
如果不可能,我需要在控制器中用一种方法处理所有可能的玩家操作:
(伪代码)
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);
}
我有一个简单的项目,基于名为 "Adonis" 的 Node.js 框架。我想使用这个框架创建一个更简单的多人游戏。我创建了一个 websocket 通道,可以在玩家和服务器之间发送和接收数据。然后我将新的控制器连接到这个频道:
const Ws = use('Ws')
Ws.channel('channelName', 'channelNameController')
问题是,用户发送的数据非常多样化。玩家可以执行各种动作。 (例如,玩家可以攻击另一个玩家,他们可以从另一个玩家那里买东西,他们可以在棋盘上移动等)。
我想只保留一个打开的套接字通道,以简化连接。但是,我需要在唯一的一个控制器中处理来自玩家的所有数据。
是否可以使用 Adonis 框架将多个控制器附加到一个 websocket 通道?
如果不可能,我需要在控制器中用一种方法处理所有可能的玩家操作:
(伪代码)
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);
}