DuyTa's picture
Upload folder using huggingface_hub
bc20498 verified
raw
history blame
1.27 kB
'use strict';
const coincident = (require('./server.js'));
class DirectEmitter {
on(type, handler) {
this[type] = handler;
return this;
}
}
class WebSocketServer extends DirectEmitter {
constructor() {
super();
this.connection = null;
}
}
class WebSocketClient extends DirectEmitter {
constructor(ws) {
super();
this.ws = ws;
this.close = null;
this.message = null;
this.error = null;
}
once(_, handler) {
this.message = message => {
this.send(message);
handler(message);
};
}
send(message) {
this.ws.send(message);
}
}
/**
* @param {object} globals Globals to expose via coincident
* @returns
*/
module.exports = globals => {
const sockets = new Map;
const wss = new WebSocketServer;
coincident(wss, globals);
return {
/**
* @param {WebSocket} ws
* @param {string} message
*/
message(ws, message) {
sockets.get(ws).message(message);
},
/**
* @param {WebSocket} ws
*/
open(ws) {
const wsc = new WebSocketClient(ws);
sockets.set(ws, wsc);
wss.connection(wsc);
},
/**
* @param {WebSocket} ws
*/
close(ws) {
sockets.get(ws).close();
sockets.delete(ws);
},
};
};