51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
const { MessageType } = require('../enums');
|
|
|
|
class MessageHandlers {
|
|
constructor ({ realm }) {
|
|
this.handlers = {};
|
|
}
|
|
|
|
registerHandler (messageType, handler) {
|
|
this.handlers[messageType] = handler;
|
|
}
|
|
|
|
handle (client, message) {
|
|
const { type } = message;
|
|
|
|
const handler = this.handlers[type];
|
|
|
|
if (!handler) {
|
|
return;
|
|
}
|
|
|
|
handler(client, message);
|
|
}
|
|
}
|
|
module.exports = ({ realm }) => {
|
|
const transmissionHandler = require('./handlers/transmission')({ realm });
|
|
|
|
const messageHandlers = new MessageHandlers({ realm });
|
|
|
|
const handleTransmission = (client, message) => {
|
|
transmissionHandler(client, {
|
|
type: message.type,
|
|
src: message.src,
|
|
dst: message.dst,
|
|
payload: message.payload
|
|
});
|
|
};
|
|
|
|
const handleHeartbeat = (client, message) => {
|
|
|
|
};
|
|
|
|
messageHandlers.registerHandler(MessageType.HEARTBEAT, handleHeartbeat);
|
|
messageHandlers.registerHandler(MessageType.OFFER, handleTransmission);
|
|
messageHandlers.registerHandler(MessageType.ANSWER, handleTransmission);
|
|
messageHandlers.registerHandler(MessageType.CANDIDATE, handleTransmission);
|
|
messageHandlers.registerHandler(MessageType.LEAVE, handleTransmission);
|
|
messageHandlers.registerHandler(MessageType.EXPIRE, handleTransmission);
|
|
|
|
return (client, message) => messageHandlers.handle(client, message);
|
|
};
|