pull-ws
Version:
Simple pull-streams for websocket client connections
32 lines (25 loc) • 729 B
JavaScript
module.exports = function(socket, callback) {
var remove = socket && (socket.removeEventListener || socket.removeListener);
function cleanup () {
if (typeof remove == 'function') {
remove.call(socket, 'open', handleOpen);
remove.call(socket, 'error', handleErr);
}
}
function handleOpen(evt) {
cleanup(); callback();
}
function handleErr (evt) {
cleanup(); callback(evt);
}
// if the socket is closing or closed, return end
if (socket.readyState >= 2) {
return callback(true);
}
// if open, trigger the callback
if (socket.readyState === 1) {
return callback();
}
socket.addEventListener('open', handleOpen);
socket.addEventListener('error', handleErr);
};