lib Communication{
class Client {
construct(appKey: string, secret: string);
private appKey: string;
private receivers: Receiver[];
private startListener();
private validateMessage(appKey): string[];
private onReceive(appKey: string; data: buffer);
public broadcast(data: Buffer);
public addReceiver(receiver: Receiver);
}
abstract class Receiver {
construct();
public onReceive(data: Buffer);
}
}
class MeetingApp {
private communication: Client;
onRecord(data: buffer) {
communication.broadcast(data);
};
}
class TransReceiver extends Receiver {
private app: TransApp;
private communication: Client;
public onReceive(data: Buffer) {
const text = app.trans(data);
communication.broadcast(text);
};
}
class TransApp {
private communication: Client;
private receiver: TransReceiver;
construct() {
this.communication = Client('trans', 'xxx');
const receiver = new TransReceiver(this, Client);
this.receiver = receiver;
communication.addReceiver(receiver);
};
trans(data: buffer): string;
}
class SubtitleReceiver extends Receiver {
private app: SubtitleApp;
private communication: Client;
public onReceive(data: Buffer) {
const text = app.playSubtitle(data);
};
}
class SubtitleApp {
private communication: Client;
private receiver: SubtitleReceiver;
construct() {
this.communication = Client('subtitle', 'xxx');
const receiver = new TransReceiver(this, Client);
this.receiver = receiver;
communication.addReceiver(receiver);
};
playSubtitle(data: buffer): string;
}