File tree Expand file tree Collapse file tree 2 files changed +20
-3
lines changed Expand file tree Collapse file tree 2 files changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,8 @@ def __init__(
2525 if not skip_ws :
2626 self .ws_manager = WebsocketManager (self .base_url )
2727 self .ws_manager .start ()
28+ else :
29+ self .ws_manager = None
2830 if meta is None :
2931 meta = self .meta ()
3032
@@ -43,6 +45,12 @@ def __init__(
4345 if name not in self .name_to_coin :
4446 self .name_to_coin [name ] = spot_info ["name" ]
4547
48+ def disconnect_websocket (self ):
49+ if self .ws_manager is None :
50+ raise RuntimeError ("Cannot call disconnect_websocket since skip_ws was used" )
51+ else :
52+ self .ws_manager .stop ()
53+
4654 def user_state (self , address : str ) -> Any :
4755 """Retrieve trading details about a user.
4856
Original file line number Diff line number Diff line change @@ -73,16 +73,25 @@ def __init__(self, base_url):
7373 ws_url = "ws" + base_url [len ("http" ) :] + "/ws"
7474 self .ws = websocket .WebSocketApp (ws_url , on_message = self .on_message , on_open = self .on_open )
7575 self .ping_sender = threading .Thread (target = self .send_ping )
76+ self .stop_event = threading .Event ()
7677
7778 def run (self ):
78- self .ping_sender .start ()
7979 self .ws .run_forever ()
80+ self .ping_sender .start ()
8081
8182 def send_ping (self ):
82- while True :
83- time .sleep (50 )
83+ while not self .stop_event .wait (50 ):
84+ if not self .ws .keep_running :
85+ break
8486 logging .debug ("Websocket sending ping" )
8587 self .ws .send (json .dumps ({"method" : "ping" }))
88+ logging .debug ("Websocket ping sender stopped" )
89+
90+ def stop (self ):
91+ self .stop_event .set ()
92+ self .ws .close ()
93+ if self .ping_sender .is_alive ():
94+ self .ping_sender .join ()
8695
8796 def on_message (self , _ws , message ):
8897 if message == "Websocket connection established." :
You can’t perform that action at this time.
0 commit comments