@@ -28,12 +28,15 @@ class WebSocketTransport(HttpWebServerBasePlugin):
2828
2929 def __init__ (self , * args : Any , ** kwargs : Any ) -> None :
3030 super ().__init__ (* args , ** kwargs )
31- self .plugins : Dict [str , WebSocketTransportBasePlugin ] = {}
31+ self .plugins : List [WebSocketTransportBasePlugin ] = []
32+ # Registered methods and handler plugin
33+ self .methods : Dict [str , WebSocketTransportBasePlugin ] = {}
3234 if b'WebSocketTransportBasePlugin' in self .flags .plugins :
3335 for klass in self .flags .plugins [b'WebSocketTransportBasePlugin' ]:
3436 p = klass (self .flags , self .client , self .event_queue )
37+ self .plugins .append (p )
3538 for method in p .methods ():
36- self .plugins [method ] = p
39+ self .methods [method ] = p
3740
3841 def routes (self ) -> List [Tuple [int , str ]]:
3942 return [
@@ -44,8 +47,8 @@ def handle_request(self, request: HttpParser) -> None:
4447 raise NotImplementedError ()
4548
4649 def on_websocket_open (self ) -> None :
47- # TODO(abhinavsingh): Add connected callback invocation
48- logger . info ( 'app ws opened' )
50+ for plugin in self . plugins :
51+ plugin . connected ( )
4952
5053 def on_websocket_message (self , frame : WebsocketFrame ) -> None :
5154 try :
@@ -59,16 +62,16 @@ def on_websocket_message(self, frame: WebsocketFrame) -> None:
5962 method = message ['method' ]
6063 if method == 'ping' :
6164 self .reply ({'id' : message ['id' ], 'response' : 'pong' })
62- elif method in self .plugins :
63- self .plugins [method ].handle_message (message )
65+ elif method in self .methods :
66+ self .methods [method ].handle_message (message )
6467 else :
6568 logger .info (frame .data )
6669 logger .info (frame .opcode )
6770 self .reply ({'id' : message ['id' ], 'response' : 'not_implemented' })
6871
6972 def on_client_connection_close (self ) -> None :
70- # TODO(abhinavsingh): Add disconnected callback invocation
71- logger . info ( 'app ws closed' )
73+ for plugin in self . plugins :
74+ plugin . disconnected ( )
7275
7376 def reply (self , data : Dict [str , Any ]) -> None :
7477 self .client .queue (
0 commit comments