@r_wohl/web-channel-message
Version:
A light weight type-safe library for communicating via the Channel Message Web API
54 lines (53 loc) • 1.32 kB
JavaScript
;
// src/worker.ts
var _self = self;
var connections = /* @__PURE__ */ new Set();
_self.onconnect = function(e) {
const port = e.ports[0];
if (!port) {
throw new Error("error connecting to message port");
}
console.log("connections: ", connections);
connections.add(port);
connections.forEach((conn) => {
const message = {
type: "internal",
channelData: {
connections: connections.size
}
};
conn.postMessage(message);
});
port.onmessage = function(e2) {
const message = e2.data;
if (message && message.type === "close") {
port.close();
console.log("deleting port: ", port);
connections.delete(port);
connections.forEach((conn) => {
const message2 = {
type: "internal",
channelData: {
connections: connections.size
}
};
conn.postMessage(message2);
});
return;
}
if (message && message.action === "broadcast") {
connections.forEach((conn) => {
if (conn !== port) {
conn.postMessage(message);
}
});
}
if (message && message.action === "all") {
connections.forEach((conn) => {
conn.postMessage(message);
});
}
};
port.start();
};
//# sourceMappingURL=worker.js.map