Skip to content

Commit

Permalink
Merge pull request #1094 from ProgrammerIn-wonderland/main
Browse files Browse the repository at this point in the history
more socket fixes
  • Loading branch information
jelveh authored Jan 17, 2025
2 parents 17d0738 + 01fc301 commit f27ef66
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/puter-js/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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}`,
Expand Down
58 changes: 32 additions & 26 deletions src/puter-js/src/modules/networking/PWispHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit f27ef66

Please sign in to comment.