Skip to content

Commit f27ef66

Browse files
authored
Merge pull request #1094 from ProgrammerIn-wonderland/main
more socket fixes
2 parents 17d0738 + 01fc301 commit f27ef66

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

src/puter-js/src/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ window.puter = (function() {
321321
this.p_can_request_rao_.resolve();
322322
})();
323323
(async () => {
324-
const wispToken = (await (await fetch('https://api.puter.com/wisp/relay-token/create', {
324+
const wispToken = (await (await fetch(this.APIOrigin + '/wisp/relay-token/create', {
325325
method: 'POST',
326326
headers: {
327327
Authorization: `Bearer ${this.authToken}`,

src/puter-js/src/modules/networking/PWispHandler.js

+32-26
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,40 @@ export class PWispHandler {
66
_bufferMax;
77
streamMap = new Map();
88
constructor(wispURL, puterAuth) {
9-
this._ws = new WebSocket(wispURL);
10-
this._ws.binaryType = "arraybuffer"
11-
this._ws.onmessage = (event) => {
12-
const parsed = parseIncomingPacket(new Uint8Array(event.data));
13-
switch (parsed.packetType) {
14-
case DATA:
15-
this.streamMap.get(parsed.streamID).dataCallBack(parsed.payload.slice(0)) // return a copy for the user to do as they please
16-
break;
17-
case CONTINUE:
18-
if (parsed.streamID === 0) {
19-
this._bufferMax = parsed.remainingBuffer;
20-
return;
21-
}
22-
this.streamMap.get(parsed.streamID).buffer = parsed.remainingBuffer;
23-
this._continue()
24-
break;
25-
case CLOSE:
26-
this.streamMap.get(parsed.streamID).closeCallBack(parsed.reason);
27-
break;
28-
case INFO:
29-
puterAuth && this._ws.send(createWispPacket({
30-
packetType: INFO,
31-
streamID: 0,
32-
puterAuth
33-
}))
34-
break;
9+
const setup = () => {
10+
this._ws = new WebSocket(wispURL);
11+
this._ws.binaryType = "arraybuffer"
12+
this._ws.onmessage = (event) => {
13+
const parsed = parseIncomingPacket(new Uint8Array(event.data));
14+
switch (parsed.packetType) {
15+
case DATA:
16+
this.streamMap.get(parsed.streamID).dataCallBack(parsed.payload.slice(0)) // return a copy for the user to do as they please
17+
break;
18+
case CONTINUE:
19+
if (parsed.streamID === 0) {
20+
this._bufferMax = parsed.remainingBuffer;
21+
this._ws.onclose = () => {
22+
setTimeout(setup(), 1000);
23+
}
24+
return;
25+
}
26+
this.streamMap.get(parsed.streamID).buffer = parsed.remainingBuffer;
27+
this._continue()
28+
break;
29+
case CLOSE:
30+
this.streamMap.get(parsed.streamID).closeCallBack(parsed.reason);
31+
break;
32+
case INFO:
33+
puterAuth && this._ws.send(createWispPacket({
34+
packetType: INFO,
35+
streamID: 0,
36+
puterAuth
37+
}))
38+
break;
39+
}
3540
}
3641
}
42+
setup();
3743
}
3844
_continue(streamID) {
3945
const queue = this.streamMap.get(streamID).queue;

0 commit comments

Comments
 (0)