1
1
import { createServer } from "http" ;
2
- import { Server } from "socket.io" ;
3
- import { io as ioc } from "socket.io-client" ;
2
+ import { Server , Socket as ServerSocket } from "socket.io" ;
3
+ import { io as ioc , Socket as ClientSocket } from "socket.io-client" ;
4
4
import expect = require( "expect.js" ) ;
5
5
import { createAdapter } from ".." ;
6
6
import type { AddressInfo } from "net" ;
@@ -11,8 +11,8 @@ import "./util";
11
11
const ioredis = require ( "ioredis" ) . createClient ;
12
12
13
13
let namespace1 , namespace2 , namespace3 ;
14
- let client1 , client2 , client3 ;
15
- let socket1 , socket2 , socket3 ;
14
+ let client1 : ClientSocket , client2 : ClientSocket , client3 : ClientSocket ;
15
+ let socket1 : ServerSocket , socket2 : ServerSocket , socket3 : ServerSocket ;
16
16
17
17
const shouldNotHappen = ( done ) => ( ) => done ( new Error ( "should not happen" ) ) ;
18
18
@@ -41,34 +41,22 @@ const shouldNotHappen = (done) => () => done(new Error("should not happen"));
41
41
done ( ) ;
42
42
} ) ;
43
43
44
- var buf = Buffer . from ( "asdfasdf" , "utf8" ) ;
45
- var array = Uint8Array . of ( 1 , 2 , 3 , 4 ) ;
44
+ const buf = Buffer . from ( "asdfasdf" , "utf8" ) ;
45
+ const array = Uint8Array . of ( 1 , 2 , 3 , 4 ) ;
46
46
socket2 . broadcast . emit ( "woot" , [ ] , { a : "b" } , buf , array ) ;
47
47
} ) ;
48
48
49
49
it ( "broadcasts to a room" , ( done ) => {
50
50
socket1 . join ( "woot" ) ;
51
- client2 . emit ( "do broadcast" ) ;
51
+ socket2 . broadcast . to ( "woot" ) . emit ( "broadcast" ) ;
52
52
53
- // does not join, performs broadcast
54
- socket2 . on ( "do broadcast" , ( ) => {
55
- socket2 . broadcast . to ( "woot" ) . emit ( "broadcast" ) ;
56
- } ) ;
57
-
58
- client1 . on ( "broadcast" , ( ) => {
59
- setTimeout ( done , 100 ) ;
60
- } ) ;
61
-
62
- client2 . on ( "broadcast" , ( ) => {
63
- throw new Error ( "Not in room" ) ;
64
- } ) ;
65
-
66
- client3 . on ( "broadcast" , ( ) => {
67
- throw new Error ( "Not in room" ) ;
68
- } ) ;
53
+ client1 . on ( "broadcast" , done ) ;
54
+ client2 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
55
+ client3 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
69
56
} ) ;
70
57
71
58
it ( "broadcasts to a numeric room" , ( done ) => {
59
+ // @ts -ignore
72
60
socket1 . join ( 123 ) ;
73
61
namespace2 . to ( 123 ) . emit ( "broadcast" ) ;
74
62
@@ -79,95 +67,53 @@ const shouldNotHappen = (done) => () => done(new Error("should not happen"));
79
67
80
68
it ( "uses a namespace to broadcast to rooms" , ( done ) => {
81
69
socket1 . join ( "woot" ) ;
82
- client2 . emit ( "do broadcast" ) ;
83
- socket2 . on ( "do broadcast" , ( ) => {
84
- namespace2 . to ( "woot" ) . emit ( "broadcast" ) ;
85
- } ) ;
86
-
87
- client1 . on ( "broadcast" , ( ) => {
88
- setTimeout ( done , 100 ) ;
89
- } ) ;
90
-
91
- client2 . on ( "broadcast" , ( ) => {
92
- throw new Error ( "Not in room" ) ;
93
- } ) ;
70
+ namespace2 . to ( "woot" ) . emit ( "broadcast" ) ;
94
71
95
- client3 . on ( "broadcast" , ( ) => {
96
- throw new Error ( "Not in room" ) ;
97
- } ) ;
72
+ client1 . on ( "broadcast" , done ) ;
73
+ client2 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
74
+ client3 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
98
75
} ) ;
99
76
100
77
it ( "broadcasts to multiple rooms at a time" , ( done ) => {
101
- function test ( ) {
102
- client2 . emit ( "do broadcast" ) ;
103
- }
104
-
105
78
socket1 . join ( [ "foo" , "bar" ] ) ;
106
- client2 . emit ( "do broadcast" ) ;
107
-
108
- socket2 . on ( "do broadcast" , ( ) => {
109
- socket2 . broadcast . to ( "foo" ) . to ( "bar" ) . emit ( "broadcast" ) ;
110
- } ) ;
79
+ socket2 . broadcast . to ( "foo" ) . to ( "bar" ) . emit ( "broadcast" ) ;
111
80
112
81
let called = false ;
113
82
client1 . on ( "broadcast" , ( ) => {
114
- if ( called ) return done ( new Error ( "Called more than once" ) ) ;
83
+ if ( called ) return shouldNotHappen ( done ) ;
115
84
called = true ;
116
- setTimeout ( done , 100 ) ;
117
- } ) ;
118
-
119
- client2 . on ( "broadcast" , ( ) => {
120
- throw new Error ( "Not in room" ) ;
85
+ done ( ) ;
121
86
} ) ;
122
87
123
- client3 . on ( "broadcast" , ( ) => {
124
- throw new Error ( "Not in room" ) ;
125
- } ) ;
88
+ client2 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
89
+ client3 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
126
90
} ) ;
127
91
128
92
it ( "doesn't broadcast when using the local flag" , ( done ) => {
129
93
socket1 . join ( "woot" ) ;
130
94
socket2 . join ( "woot" ) ;
131
- client2 . emit ( "do broadcast" ) ;
132
-
133
- socket2 . on ( "do broadcast" , ( ) => {
134
- namespace2 . local . to ( "woot" ) . emit ( "local broadcast" ) ;
135
- } ) ;
95
+ namespace2 . local . to ( "woot" ) . emit ( "local broadcast" ) ;
136
96
137
- client1 . on ( "local broadcast" , ( ) => {
138
- throw new Error ( "Not in local server" ) ;
139
- } ) ;
140
-
141
- client2 . on ( "local broadcast" , ( ) => {
142
- setTimeout ( done , 100 ) ;
143
- } ) ;
144
-
145
- client3 . on ( "local broadcast" , ( ) => {
146
- throw new Error ( "Not in local server" ) ;
147
- } ) ;
97
+ client1 . on ( "local broadcast" , shouldNotHappen ( done ) ) ;
98
+ client2 . on ( "local broadcast" , done ) ;
99
+ client3 . on ( "local broadcast" , shouldNotHappen ( done ) ) ;
148
100
} ) ;
149
101
150
102
it ( "doesn't broadcast to left rooms" , ( done ) => {
151
103
socket1 . join ( "woot" ) ;
152
104
socket1 . leave ( "woot" ) ;
105
+ socket2 . broadcast . to ( "woot" ) . emit ( "broadcast" ) ;
153
106
154
- socket2 . on ( "do broadcast" , ( ) => {
155
- socket2 . broadcast . to ( "woot" ) . emit ( "broadcast" ) ;
156
-
157
- setTimeout ( done , 100 ) ;
158
- } ) ;
159
-
160
- client2 . emit ( "do broadcast" ) ;
161
-
162
- client1 . on ( "broadcast" , ( ) => {
163
- throw new Error ( "Not in room" ) ;
164
- } ) ;
107
+ client1 . on ( "broadcast" , shouldNotHappen ( done ) ) ;
108
+ done ( ) ;
165
109
} ) ;
166
110
167
111
it ( "deletes rooms upon disconnection" , ( done ) => {
168
112
socket1 . join ( "woot" ) ;
169
113
socket1 . on ( "disconnect" , ( ) => {
114
+ // @ts -ignore
170
115
expect ( socket1 . adapter . sids [ socket1 . id ] ) . to . be ( undefined ) ;
116
+ // @ts -ignore
171
117
expect ( socket1 . adapter . rooms ) . to . be . empty ( ) ;
172
118
client1 . disconnect ( ) ;
173
119
done ( ) ;
@@ -327,6 +273,7 @@ const shouldNotHappen = (done) => () => done(new Error("should not happen"));
327
273
describe ( "fetchSockets" , ( ) => {
328
274
it ( "returns all socket instances" , async ( ) => {
329
275
socket2 . data = "test" ;
276
+ // @ts -ignore
330
277
socket2 . handshake . sessionStore = "not included" ;
331
278
332
279
const sockets = await namespace1 . fetchSockets ( ) ;
@@ -340,6 +287,7 @@ const shouldNotHappen = (done) => () => done(new Error("should not happen"));
340
287
( socket ) => socket . id === socket2 . id
341
288
) ;
342
289
expect ( remoteSocket2 === socket2 ) . to . be ( false ) ;
290
+ // @ts -ignore
343
291
delete socket2 . handshake . sessionStore ;
344
292
expect ( remoteSocket2 . handshake ) . to . eql ( socket2 . handshake ) ;
345
293
expect ( remoteSocket2 . data ) . to . eql ( "test" ) ;
0 commit comments