Comparing version 2.0.0 to 2.1.0
{ | ||
"name": "pull-ws", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"description": "Simple pull-streams for websocket client connections", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
12
ready.js
module.exports = function(socket, callback) { | ||
var remove = socket && (socket.removeEventListener || socket.removeListener); | ||
function handleOpen(evt) { | ||
function cleanup () { | ||
if (typeof remove == 'function') { | ||
remove.call(socket, 'open', handleOpen); | ||
remove.call(socket, 'error', handleErr); | ||
} | ||
} | ||
callback(); | ||
function handleOpen(evt) { | ||
cleanup(); callback(); | ||
} | ||
function handleErr (evt) { | ||
cleanup(); callback(evt); | ||
} | ||
// if the socket is closing or closed, return end | ||
@@ -23,2 +30,3 @@ if (socket.readyState >= 2) { | ||
socket.addEventListener('open', handleOpen); | ||
socket.addEventListener('error', handleErr); | ||
}; |
@@ -40,3 +40,3 @@ var pull = require('pull-core'); | ||
if (end) { | ||
return read(end); | ||
return read(end, function () {}); | ||
} | ||
@@ -43,0 +43,0 @@ |
var pull = require('pull-core'); | ||
var ready = require('./ready'); | ||
var EOF = []; | ||
@@ -16,2 +15,3 @@ /** | ||
var receiver; | ||
var ended; | ||
@@ -27,15 +27,28 @@ socket.addEventListener('message', function(evt) { | ||
socket.addEventListener('close', function(evt) { | ||
if (ended) return; | ||
if (receiver) { | ||
return receiver(true); | ||
return receiver(ended = true); | ||
} | ||
}); | ||
buffer.push(EOF); | ||
socket.addEventListener('error', function (evt) { | ||
if (ended) return; | ||
ended = evt; | ||
if (receiver) { | ||
receiver(ended); | ||
} | ||
}); | ||
function read(end, cb) { | ||
function read(abort, cb) { | ||
receiver = null; | ||
//if stream has already ended. | ||
if (ended) | ||
return cb(ended) | ||
// if ended, abort | ||
if (end) { | ||
return cb && cb(end); | ||
if (abort) { | ||
//this will callback when socket closes | ||
receiver = cb | ||
return socket.close() | ||
} | ||
@@ -45,13 +58,15 @@ | ||
if (end) { | ||
return cb(end); | ||
return cb(ended = end); | ||
} | ||
// read from the socket | ||
if (buffer.length > 0) { | ||
if (buffer[0] === EOF) { | ||
return cb(true); | ||
} | ||
if (ended && ended !== true) { | ||
return cb(ended); | ||
} | ||
else if (buffer.length > 0) { | ||
return cb(null, buffer.shift()); | ||
} | ||
else if (ended) { | ||
return cb(true); | ||
} | ||
@@ -58,0 +73,0 @@ receiver = cb; |
require('./read'); | ||
require('./echo'); | ||
require('./closeonend'); | ||
require('./error'); |
var wss = require('./server') | ||
var tape = require('tape') | ||
require('./all') | ||
require('./read'); | ||
require('./echo'); | ||
require('./closeonend'); | ||
require('./error') | ||
@@ -6,0 +9,0 @@ tape('teardown', function (t) { |
13903
18
366