braid-http
Advanced tools
Comparing version
@@ -871,4 +871,15 @@ // var peer = Math.random().toString(36).substr(2) | ||
// and send messages to the appropriate requests | ||
parse_multiplex_stream(r.body.getReader(), (reqest, bytes) => { | ||
requests.get(reqest)?.(bytes) | ||
var try_deleting = new Set() | ||
parse_multiplex_stream(r.body.getReader(), async (request, bytes) => { | ||
if (requests.has(request)) { | ||
requests.get(request)(bytes) | ||
} else if (!try_deleting.has(request)) { | ||
try_deleting.add(request) | ||
try { | ||
await braid_fetch(`${origin}/.well-known/multiplex/${multiplexer}/${request}`, { | ||
method: 'DELETE', | ||
headers: { 'Multiplex-Version': multiplex_version }, retry: true | ||
}) | ||
} finally { try_deleting.delete(request) } | ||
} | ||
}, e => { | ||
@@ -1078,3 +1089,4 @@ // the multiplexer stream has died.. let everyone know.. | ||
var headerStr = new TextDecoder().decode(buffers[0].slice(0, header_length)) | ||
var m = headerStr.match(/^[\r\n]*((\d+) bytes for|close) request ([A-Za-z0-9_-]+)\r\n$/) | ||
var m = headerStr.match(/^[\r\n]*((\d+) bytes for|close|start) request ([A-Za-z0-9_-]+)\r\n$/) | ||
if (!m) throw new Error('invalid multiplex header') | ||
@@ -1086,5 +1098,6 @@ request_id = m[3] | ||
if (m[1] === 'close') { | ||
cb(request_id) | ||
break | ||
if (m[1] === 'close' || m[1] === 'start') { | ||
cb(request_id, m[1] === 'start' ? new Uint8Array() : undefined) | ||
header_length = 0 | ||
header_started = false | ||
} else chunk_size = 1 * m[2] | ||
@@ -1104,3 +1117,2 @@ } else break | ||
chunk_size = null | ||
request_id = null | ||
header_length = 0 | ||
@@ -1107,0 +1119,0 @@ header_started = false |
@@ -343,2 +343,4 @@ var assert = require('assert') | ||
m.res.write(`start request ${request}\r\n`) | ||
// let the requester know we've multiplexed their response | ||
@@ -345,0 +347,0 @@ var og_stream = res.stream |
{ | ||
"name": "braid-http", | ||
"version": "1.3.41", | ||
"version": "1.3.42", | ||
"description": "An implementation of Braid-HTTP for Node.js and Browsers", | ||
@@ -5,0 +5,0 @@ "scripts": { |
83404
0.88%1600
0.76%