@@ -6,34 +6,40 @@ export class PWispHandler {
6
6
_bufferMax ;
7
7
streamMap = new Map ( ) ;
8
8
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
+ }
35
40
}
36
41
}
42
+ setup ( ) ;
37
43
}
38
44
_continue ( streamID ) {
39
45
const queue = this . streamMap . get ( streamID ) . queue ;
0 commit comments