Fix some issues with websockets and encoding
This commit is contained in:
@@ -10,7 +10,7 @@ export class CenterSessionManager extends SessionManager {
|
|||||||
ManagedSessionClass: typeof Center = Center;
|
ManagedSessionClass: typeof Center = Center;
|
||||||
sessionId: number = 0;
|
sessionId: number = 0;
|
||||||
sessions: Center[] = [];
|
sessions: Center[] = [];
|
||||||
identifier: string = "center";
|
identifier: string = "Client";
|
||||||
readonly logger: Logger = new Logger("CenterSessionManager");
|
readonly logger: Logger = new Logger("CenterSessionManager");
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@@ -10,7 +10,7 @@ export default class ClientSessionManager extends SessionManager {
|
|||||||
ManagedSessionClass: typeof Client = Client;
|
ManagedSessionClass: typeof Client = Client;
|
||||||
sessionId: number = 0;
|
sessionId: number = 0;
|
||||||
sessions: Client[] = [];
|
sessions: Client[] = [];
|
||||||
identifier: string = "client";
|
identifier: string = "Client";
|
||||||
readonly logger: Logger = new Logger("ClientSessionManager");
|
readonly logger: Logger = new Logger("ClientSessionManager");
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@@ -2,15 +2,17 @@ import EventEmitter from "events";
|
|||||||
import {PDU, SerializedJob} from "../CommonObjects";
|
import {PDU, SerializedJob} from "../CommonObjects";
|
||||||
|
|
||||||
const smpp = require("smpp");
|
const smpp = require("smpp");
|
||||||
|
// TODO: Use pdu.data_coding for data coding
|
||||||
|
// See available schemes here https://messaggio.com/industry-specifications-and-standards/smpp-data-coding-scheme/
|
||||||
export class Job {
|
export class Job {
|
||||||
static readonly STATE_CHANGED: string = "STATE_CHANGED";
|
static readonly STATE_CHANGED: string = "STATE_CHANGED";
|
||||||
private eventEmitter: EventEmitter = new EventEmitter();
|
private eventEmitter: EventEmitter = new EventEmitter();
|
||||||
|
|
||||||
constructor(pdu: PDU, perSecond?: number, count?: number) {
|
constructor(pdu: PDU, perSecond?: number, count?: number) {
|
||||||
if (pdu.short_message && pdu.short_message.type === "Buffer") {
|
if (pdu.short_message && pdu.short_message.type === "Buffer") {
|
||||||
pdu.short_message = String(pdu.short_message.data);
|
pdu.short_message = Buffer.from(pdu.short_message.data, 'ascii').toString();
|
||||||
}
|
}
|
||||||
|
pdu.short_message = 'test123';
|
||||||
this._pdu = pdu;
|
this._pdu = pdu;
|
||||||
this._perSecond = perSecond;
|
this._perSecond = perSecond;
|
||||||
this._count = count;
|
this._count = count;
|
||||||
|
@@ -131,22 +131,22 @@ export abstract class SmppSession {
|
|||||||
this.logger.log1(`Update WS: ${event}`);
|
this.logger.log1(`Update WS: ${event}`);
|
||||||
let message: {
|
let message: {
|
||||||
type: string,
|
type: string,
|
||||||
data?: string
|
data?: any
|
||||||
} = {
|
} = {
|
||||||
type: event,
|
type: event,
|
||||||
};
|
};
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case this.EVENT.STATE_CHANGED:
|
case this.EVENT.STATE_CHANGED:
|
||||||
message.data = JSON.stringify(this.serialize());
|
message.data = this.serialize();
|
||||||
break;
|
break;
|
||||||
case this.EVENT.STATUS_CHANGED:
|
case this.EVENT.STATUS_CHANGED:
|
||||||
message.data = JSON.stringify(this.status);
|
message.data = this.status;
|
||||||
break;
|
break;
|
||||||
case this.EVENT.ANY_PDU:
|
case this.EVENT.ANY_PDU:
|
||||||
message.data = JSON.stringify(args![0]);
|
message.data = args![0];
|
||||||
break;
|
break;
|
||||||
case this.EVENT.MESSAGE_SEND_COUNTER_UPDATE_EVENT:
|
case this.EVENT.MESSAGE_SEND_COUNTER_UPDATE_EVENT:
|
||||||
message.data = JSON.stringify(args![0]);
|
message.data = args![0];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
this.eventEmitter.emit(this.UPDATE_WS, message);
|
this.eventEmitter.emit(this.UPDATE_WS, message);
|
||||||
|
@@ -19,6 +19,7 @@ export class ClientSet {
|
|||||||
this.sessionId = parseInt(data[1]);
|
this.sessionId = parseInt(data[1]);
|
||||||
|
|
||||||
this.logger = new Logger(`ClientSet-${this.type}-${this.sessionId}`);
|
this.logger = new Logger(`ClientSet-${this.type}-${this.sessionId}`);
|
||||||
|
this.logger.log1(`Created client set for ${this.type} ${this.sessionId}`);
|
||||||
|
|
||||||
this.relevantSessionManager = sessionManagers.find(sm => sm.identifier === this.type);
|
this.relevantSessionManager = sessionManagers.find(sm => sm.identifier === this.type);
|
||||||
if (!this.relevantSessionManager) {
|
if (!this.relevantSessionManager) {
|
||||||
@@ -45,7 +46,7 @@ export class ClientSet {
|
|||||||
add(ws: any): void {
|
add(ws: any): void {
|
||||||
this.logger.log2(`Added client`);
|
this.logger.log2(`Added client`);
|
||||||
this.clients.push(ws);
|
this.clients.push(ws);
|
||||||
ws.on('close', this.eventOnClose.bind(this));
|
ws.on('close', this.eventOnClose.bind(this, ws));
|
||||||
}
|
}
|
||||||
|
|
||||||
eventOnClose(ws: any): void {
|
eventOnClose(ws: any): void {
|
||||||
@@ -54,10 +55,12 @@ export class ClientSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
notifyClients(message: string) {
|
notifyClients(message: string) {
|
||||||
this.logger.log2(`Notifying clients: ${message}`);
|
if (this.clients.length > 0) {
|
||||||
this.clients.forEach((ws) => {
|
this.logger.log2(`Notifying clients: ${message}`);
|
||||||
ws.send(message);
|
this.clients.forEach((ws) => {
|
||||||
});
|
ws.send(message);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private attachListener(session: SmppSession) {
|
private attachListener(session: SmppSession) {
|
||||||
|
@@ -39,6 +39,7 @@ export class WSServer {
|
|||||||
let clientSet: ClientSet | undefined = this.clients.find((clientSet: ClientSet) => clientSet.identifier === message);
|
let clientSet: ClientSet | undefined = this.clients.find((clientSet: ClientSet) => clientSet.identifier === message);
|
||||||
if (!clientSet) {
|
if (!clientSet) {
|
||||||
clientSet = new ClientSet(message, this.sessionManagers);
|
clientSet = new ClientSet(message, this.sessionManagers);
|
||||||
|
this.clients.push(clientSet);
|
||||||
}
|
}
|
||||||
clientSet.add(ws);
|
clientSet.add(ws);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user