File tree Expand file tree Collapse file tree 1 file changed +9
-5
lines changed
plugins/websocket/guest-js Expand file tree Collapse file tree 1 file changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -32,9 +32,9 @@ export type Message =
32
32
33
33
export default class WebSocket {
34
34
id : number
35
- private readonly listeners : Array < ( arg : Message ) => void >
35
+ private readonly listeners : Set < ( arg : Message ) => void >
36
36
37
- constructor ( id : number , listeners : Array < ( arg : Message ) => void > ) {
37
+ constructor ( id : number , listeners : Set < ( arg : Message ) => void > ) {
38
38
this . id = id
39
39
this . listeners = listeners
40
40
}
@@ -43,7 +43,7 @@ export default class WebSocket {
43
43
url : string ,
44
44
config ?: ConnectionConfig
45
45
) : Promise < WebSocket > {
46
- const listeners : Array < ( arg : Message ) => void > = [ ]
46
+ const listeners : Set < ( arg : Message ) => void > = new Set ( )
47
47
48
48
const onMessage = new Channel < Message > ( )
49
49
onMessage . onmessage = ( message : Message ) : void => {
@@ -63,8 +63,12 @@ export default class WebSocket {
63
63
} ) . then ( ( id ) => new WebSocket ( id , listeners ) )
64
64
}
65
65
66
- addListener ( cb : ( arg : Message ) => void ) : void {
67
- this . listeners . push ( cb )
66
+ addListener ( cb : ( arg : Message ) => void ) : ( ) => void {
67
+ this . listeners . add ( cb )
68
+
69
+ return ( ) => {
70
+ this . listeners . delete ( cb )
71
+ }
68
72
}
69
73
70
74
async send ( message : Message | string | number [ ] ) : Promise < void > {
You can’t perform that action at this time.
0 commit comments