refactor for less complexity
This commit is contained in:
parent
473cbd239f
commit
efa28482de
@ -4,9 +4,6 @@ import ChannelManager from '../channelManager';
|
||||
import PublicChannel from '../channels/types/publicChannel';
|
||||
import PrivateChannel from '../channels/types/privateChannel';
|
||||
import CustomChannel from '../channels/types/customChannel';
|
||||
import PublicClient from '../clients/types/publicClient';
|
||||
import PrivateClient from '../clients/types/privateClient';
|
||||
import CustomClient from '../clients/types/customClient';
|
||||
|
||||
var messageManager = require('../messageManager');
|
||||
var logger = require('../logger');
|
||||
@ -19,6 +16,7 @@ class ClientBase {
|
||||
clientManager: ClientManager;
|
||||
channelManager: ChannelManager;
|
||||
roles: Array<string>;
|
||||
messageListener: (data: any) => void;
|
||||
|
||||
constructor(data: any, ws: WebSocket, channelManager: ChannelManager, clientManager: ClientManager) {
|
||||
this.ws = ws;
|
||||
@ -28,6 +26,13 @@ class ClientBase {
|
||||
this.clientManager = clientManager;
|
||||
this.channelManager = channelManager;
|
||||
this.roles = ['receiver']
|
||||
this.messageListener = (data: any) => {
|
||||
if (this.channel) {
|
||||
logger.accessLog.info(`starting message transaction on channel ${this.channel.id}: `, {data: data});
|
||||
data = messageManager.prepareMessage(data, this.channel, this);
|
||||
this.messageTransaction(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getData() {
|
||||
@ -45,28 +50,7 @@ class ClientBase {
|
||||
connectToChannel(channel: PublicChannel|PrivateChannel|CustomChannel) {
|
||||
this.channel = channel;
|
||||
|
||||
let messageListener = (data: any) => {
|
||||
logger.accessLog.info(`starting message transaction on channel ${channel.id}: `, {data: data});
|
||||
data = messageManager.prepareMessage(data, channel, this);
|
||||
|
||||
if (!data.error) {
|
||||
if (data.message_type == 'broadcast') {
|
||||
channel.broadcastMessage(this, data);
|
||||
} else if (data.message_type == 'direct') {
|
||||
let to = this.clientManager.getClient(data.message.to)
|
||||
to.directMessage(data)
|
||||
} else if (data.message_type == 'changeChannel') {
|
||||
this.ws.removeListener('message', messageListener);
|
||||
this.channelManager.changeChannel(this, data);
|
||||
}
|
||||
|
||||
logger.accessLog.info(`message transaction complete on channel ${channel.id}: `, {message: data});
|
||||
} else {
|
||||
logger.errorLog.info(`Validation failed, please review schema: ${channel.id}`, {data: {message: data, error: data.error}});
|
||||
}
|
||||
}
|
||||
|
||||
this.ws.on('message', messageListener);
|
||||
this.ws.on('message', this.messageListener);
|
||||
|
||||
this.ws.on('close', (reasonCode: string, description: string) => {
|
||||
logger.accessLog.info(`closing connection for client ${this.id}`);
|
||||
@ -80,6 +64,28 @@ class ClientBase {
|
||||
});
|
||||
}
|
||||
|
||||
messageTransaction(data: any) {
|
||||
if (this.channel && !data.error) {
|
||||
switch (data.message_type) {
|
||||
case 'broadcast':
|
||||
this.channel.broadcastMessage(this, data);
|
||||
break;
|
||||
case 'direct':
|
||||
let to = this.clientManager.getClient(data.message.to)
|
||||
to.directMessage(data)
|
||||
break;
|
||||
case 'changeChannel':
|
||||
this.ws.removeListener('message', this.messageListener);
|
||||
this.channelManager.changeChannel(this, data);
|
||||
break;
|
||||
}
|
||||
|
||||
logger.accessLog.info(`message transaction complete on channel ${this.channel.id}: `, {message: data});
|
||||
} else {
|
||||
logger.errorLog.info(`Validation failed or client is not part of a channel, please review schema`, {data: {message: data, error: data.error}});
|
||||
}
|
||||
}
|
||||
|
||||
directMessage(message: any) {
|
||||
this.ws.send(JSON.stringify(message));
|
||||
logger.accessLog.info(`sent direct message to ${this.id}`, { data: { message: message }});
|
||||
|
Loading…
x
Reference in New Issue
Block a user