it-ws
Version:
Simple async iterables for websocket client connections
27 lines • 846 B
JavaScript
export default async (socket) => {
// if the socket is closing or closed, return end
if (socket.readyState >= 2) {
throw new Error('socket closed');
}
// if open, return
if (socket.readyState === 1) {
return;
}
await new Promise((resolve, reject) => {
function cleanup() {
socket.removeEventListener('open', handleOpen);
socket.removeEventListener('error', handleErr);
}
function handleOpen() {
cleanup();
resolve();
}
function handleErr(event) {
cleanup();
reject(event.error ?? new Error(`connect ECONNREFUSED ${socket.url}`));
}
socket.addEventListener('open', handleOpen);
socket.addEventListener('error', handleErr);
});
};
//# sourceMappingURL=ready.js.map