working poc
This commit is contained in:
48
frontend-web-vanilla/src/SignalingServer.ts
Normal file
48
frontend-web-vanilla/src/SignalingServer.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import type { ICandidateMessage, IAnswerMessage, IOfferMessage, IMessage } from "./messaging/IMessage";
|
||||
import { MessageKind } from "./messaging/MessageKind";
|
||||
import type { ISignalingClient } from "./interfaces/ISignalingClient";
|
||||
|
||||
export default class SignalingServer implements ISignalingClient {
|
||||
private readonly _webSocket: WebSocket;
|
||||
|
||||
constructor(webSocket: WebSocket) {
|
||||
this._webSocket = webSocket;
|
||||
}
|
||||
|
||||
public on<T>(kind: MessageKind, callback: (message: IMessage<T>) => Promise<void>): void {
|
||||
this._webSocket.addEventListener('message', (event) => {
|
||||
const message = JSON.parse(event.data) as IMessage<T>;
|
||||
|
||||
if (message.type === kind) {
|
||||
callback(message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public async sendOffer(offer: RTCSessionDescriptionInit): Promise<void> {
|
||||
const message: IOfferMessage = {
|
||||
type: MessageKind.Offer,
|
||||
payload: offer
|
||||
};
|
||||
|
||||
this._webSocket.send(JSON.stringify(message));
|
||||
}
|
||||
|
||||
public async sendAnswer(answer: RTCSessionDescriptionInit): Promise<void> {
|
||||
const message: IAnswerMessage = {
|
||||
type: MessageKind.Answer,
|
||||
payload: answer
|
||||
};
|
||||
|
||||
this._webSocket.send(JSON.stringify(message));
|
||||
}
|
||||
|
||||
public async sendCandidate(candidate: RTCIceCandidateInit): Promise<void> {
|
||||
const message: ICandidateMessage = {
|
||||
type: MessageKind.Candidate,
|
||||
payload: candidate
|
||||
};
|
||||
|
||||
this._webSocket.send(JSON.stringify(message));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user