mirror of
https://github.com/HeyPuter/puter.git
synced 2026-07-08 08:12:15 +00:00
Merge pull request #1094 from ProgrammerIn-wonderland/main
more socket fixes
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user