Merge pull request #1094 from ProgrammerIn-wonderland/main

more socket fixes
This commit is contained in:
Nariman Jelveh
2025-01-17 14:08:14 -08:00
committed by GitHub
2 changed files with 33 additions and 27 deletions
+1 -1
View File
@@ -321,7 +321,7 @@ window.puter = (function() {
this.p_can_request_rao_.resolve();
})();
(async () => {
const wispToken = (await (await fetch('https://api.puter.com/wisp/relay-token/create', {
const wispToken = (await (await fetch(this.APIOrigin + '/wisp/relay-token/create', {
method: 'POST',
headers: {
Authorization: `Bearer ${this.authToken}`,
@@ -6,34 +6,40 @@ export class PWispHandler {
_bufferMax;
streamMap = new Map();
constructor(wispURL, puterAuth) {
this._ws = new WebSocket(wispURL);
this._ws.binaryType = "arraybuffer"
this._ws.onmessage = (event) => {
const parsed = parseIncomingPacket(new Uint8Array(event.data));
switch (parsed.packetType) {
case DATA:
this.streamMap.get(parsed.streamID).dataCallBack(parsed.payload.slice(0)) // return a copy for the user to do as they please
break;
case CONTINUE:
if (parsed.streamID === 0) {
this._bufferMax = parsed.remainingBuffer;
return;
}
this.streamMap.get(parsed.streamID).buffer = parsed.remainingBuffer;
this._continue()
break;
case CLOSE:
this.streamMap.get(parsed.streamID).closeCallBack(parsed.reason);
break;
case INFO:
puterAuth && this._ws.send(createWispPacket({
packetType: INFO,
streamID: 0,
puterAuth
}))
break;
const setup = () => {
this._ws = new WebSocket(wispURL);
this._ws.binaryType = "arraybuffer"
this._ws.onmessage = (event) => {
const parsed = parseIncomingPacket(new Uint8Array(event.data));
switch (parsed.packetType) {
case DATA:
this.streamMap.get(parsed.streamID).dataCallBack(parsed.payload.slice(0)) // return a copy for the user to do as they please
break;
case CONTINUE:
if (parsed.streamID === 0) {
this._bufferMax = parsed.remainingBuffer;
this._ws.onclose = () => {
setTimeout(setup(), 1000);
}
return;
}
this.streamMap.get(parsed.streamID).buffer = parsed.remainingBuffer;
this._continue()
break;
case CLOSE:
this.streamMap.get(parsed.streamID).closeCallBack(parsed.reason);
break;
case INFO:
puterAuth && this._ws.send(createWispPacket({
packetType: INFO,
streamID: 0,
puterAuth
}))
break;
}
}
}
setup();
}
_continue(streamID) {
const queue = this.streamMap.get(streamID).queue;