|
@@ -18,12 +18,7 @@ interface IAuthParams {
|
|
|
key?: string;
|
|
|
}
|
|
|
|
|
|
-type CustomConfig = Pick<IConfig, 'path' | 'key' | 'concurrent_limit'>;
|
|
|
-
|
|
|
-type MessagesTransport = {
|
|
|
- registerHanadler(handler: (message: { type: string; dst?: string; } & any) => boolean): void;
|
|
|
- sendMessage(message: { type: string; src: string; } & any): void;
|
|
|
-};
|
|
|
+type CustomConfig = Pick<IConfig, 'path' | 'key' | 'concurrent_limit' | 'messagesTransport'>;
|
|
|
|
|
|
const WS_PATH = 'peerjs';
|
|
|
|
|
@@ -31,7 +26,6 @@ type Dependencies = {
|
|
|
server: any;
|
|
|
realm: IRealm;
|
|
|
config: CustomConfig;
|
|
|
- messagesTransport?: MessagesTransport;
|
|
|
};
|
|
|
|
|
|
export class WebSocketServer extends EventEmitter implements IWebSocketServer {
|
|
@@ -41,16 +35,14 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer {
|
|
|
|
|
|
private readonly realm: IRealm;
|
|
|
private readonly config: CustomConfig;
|
|
|
- private readonly messagesTransport?: MessagesTransport;
|
|
|
|
|
|
- constructor({ server, realm, config, messagesTransport }: Dependencies) {
|
|
|
+ constructor({ server, realm, config }: Dependencies) {
|
|
|
super();
|
|
|
|
|
|
this.setMaxListeners(0);
|
|
|
|
|
|
this.realm = realm;
|
|
|
this.config = config;
|
|
|
- this.messagesTransport = messagesTransport;
|
|
|
|
|
|
const path = this.config.path;
|
|
|
this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_PATH}`;
|
|
@@ -60,7 +52,7 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer {
|
|
|
this.socketServer.on("connection", (socket: MyWebSocket, req) => this._onSocketConnection(socket, req));
|
|
|
this.socketServer.on("error", (error: Error) => this._onSocketError(error));
|
|
|
|
|
|
- this.messagesTransport?.registerHanadler((message) => this._handleMessage(message));
|
|
|
+ this.config.messagesTransport?.registerHanadler((message) => this._handleMessage(message));
|
|
|
}
|
|
|
|
|
|
private _onSocketConnection(socket: MyWebSocket, req: IncomingMessage): void {
|
|
@@ -138,8 +130,8 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer {
|
|
|
|
|
|
message.src = client.getId();
|
|
|
|
|
|
- if (message.type !== "HEARTBEAT" && this.messagesTransport) {
|
|
|
- this.messagesTransport.sendMessage(message);
|
|
|
+ if (message.type !== "HEARTBEAT" && this.config.messagesTransport) {
|
|
|
+ this.config.messagesTransport.sendMessage(message);
|
|
|
return;
|
|
|
}
|
|
|
|