add disconnection from server functionality

had to refactor how the server connects
This commit is contained in:
Ziad-I
2024-06-13 00:00:33 +03:00
committed by Dion Moult
parent 65a1fbea78
commit 89fb59307c
5 changed files with 35 additions and 7 deletions
@@ -21,6 +21,7 @@ from . import ui, prop, operator
classes = (
operator.ConnectToWebsocketServer,
operator.DisconnectWebsocketServer,
operator.killWebsocketServer,
prop.WebProperties,
ui.BIM_PT_webui,
@@ -37,6 +37,16 @@ class ConnectToWebsocketServer(bpy.types.Operator):
return {"FINISHED"}
class DisconnectWebsocketServer(bpy.types.Operator):
bl_idname = "bim.disconnect_websocket_server"
bl_label = "Disconnect from websocket server"
bl_description = "disconnect from current websocket server"
def execute(self, context):
core.disconnect_websocket_server(tool.Web)
return {"FINISHED"}
class killWebsocketServer(bpy.types.Operator):
bl_idname = "bim.kill_websocket_server"
bl_label = "Kill websocket server"
@@ -50,3 +50,6 @@ class BIM_PT_webui(Panel):
row = layout.row()
row.operator("bim.kill_websocket_server")
row = layout.row()
row.operator("bim.disconnect_websocket_server")
+6 -1
View File
@@ -18,7 +18,12 @@ def connect_websocket_server(web, port):
web.set_is_connected(True)
def disconnect_websocket_server(web):
web.disconnect_websocket_server()
web.set_is_connected(False)
def kill_websocket_server(web):
web.kill_websocket_server()
web.set_is_running(False)
web.set_is_connected(False)
web.kill_websocket_server()
+15 -6
View File
@@ -66,12 +66,13 @@ class Web(blenderbim.core.tool.Web):
@classmethod
def connect_websocket_server(cls, port):
def set_thread_loop(url):
asyncio.set_event_loop(ws_thread_loop)
asyncio.run(cls.sio_connect(url))
def start_thread_loop(url):
global ws_thread_loop
ws_thread_loop = asyncio.new_event_loop()
ws_thread_loop.run_until_complete(cls.sio_connect(url))
ws_url = "ws://localhost:" + str(port) + "/blender"
wserver_thread = threading.Thread(target=set_thread_loop, args=(ws_url))
ws_url = f"ws://localhost:{port}/blender"
wserver_thread = threading.Thread(target=start_thread_loop, args=(ws_url,))
wserver_thread.daemon = True
wserver_thread.start()
@@ -83,7 +84,15 @@ class Web(blenderbim.core.tool.Web):
# sio.on("data", test.message_handler, namespace="/blender")
# await sio.emit("data", {"from": "client"}, namespace="/blender")
await sio.wait()
@classmethod
def disconnect_websocket_server(cls):
ws_thread_loop.run_until_complete(cls.sio_disconnect())
print("Disconnected from websocket server")
@classmethod
async def sio_disconnect(cls):
await sio.disconnect()
@classmethod
def kill_websocket_server(cls):