Quellcode durchsuchen

Adding the END command to stop the server locally

Andrej Studen vor 3 Jahren
Ursprung
Commit
0d06e0a9ab
1 geänderte Dateien mit 22 neuen und 7 gelöschten Zeilen
  1. 22 7
      websocketServer.py

+ 22 - 7
websocketServer.py

@@ -10,8 +10,9 @@ import subprocess
 async def hello(websocket):
     #websocket is a WebSocketServerProtocol
     message = await websocket.recv()
-    host=websocket.remote_address[0]
-
+    client=websocket.remote_address[0]
+    host=websocket.local_address[0]
+    
     #delegate parsing to subroutine
     #assume the message will be
     #pathToPythonCode:argument
@@ -22,13 +23,26 @@ async def hello(websocket):
     #for example _softwareSrc_ will get replaced by 
     #software/src directory from setup.json
 
-    message=':'.join([host,message])
+    parts=message.split(':')
+    message=':'.join([client,message])
 
     print(f"<<< FROM: {host}")
     print(f"<<< {message}")
 
     greeting = f"Hello {message}!"
     
+    key=0
+    try:
+        key=int(parts[1]) 
+    except ValueError:
+        #only used for exit checking
+        pass
+
+    if client==host and parts[0]=="END" and key<0:
+        print("Exit signal")
+        websocket.ws_server.close()
+        return
+    
     #run(message)
     
     
@@ -39,10 +53,11 @@ async def hello(websocket):
 async def main():
     origins=["merlin","labkey-public","onko-nix",None]
     #server="vangogh.fmf.uni-lj.si"
-    server="193.2.68.227"
-    print(f"Starting server at {server}")
-    async with websockets.serve(hello, server, 8765,origins=origins):
-        await asyncio.Future()  # run forever
+    serverIP="193.2.68.227"
+    print(f"Starting server at {serverIP}")
+    async with websockets.serve(hello, serverIP, 8765,origins=origins) as server:
+        #await asyncio.Future()  # run forever
+        await server.wait_closed()
 
 def run(message):
     args=message.split(':')