mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 06:39:13 +00:00
add disconnection from server functionality
had to refactor how the server connects
This commit is contained in:
@@ -21,6 +21,7 @@ from . import ui, prop, operator
|
|||||||
|
|
||||||
classes = (
|
classes = (
|
||||||
operator.ConnectToWebsocketServer,
|
operator.ConnectToWebsocketServer,
|
||||||
|
operator.DisconnectWebsocketServer,
|
||||||
operator.killWebsocketServer,
|
operator.killWebsocketServer,
|
||||||
prop.WebProperties,
|
prop.WebProperties,
|
||||||
ui.BIM_PT_webui,
|
ui.BIM_PT_webui,
|
||||||
|
|||||||
@@ -37,6 +37,16 @@ class ConnectToWebsocketServer(bpy.types.Operator):
|
|||||||
return {"FINISHED"}
|
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):
|
class killWebsocketServer(bpy.types.Operator):
|
||||||
bl_idname = "bim.kill_websocket_server"
|
bl_idname = "bim.kill_websocket_server"
|
||||||
bl_label = "Kill websocket server"
|
bl_label = "Kill websocket server"
|
||||||
|
|||||||
@@ -50,3 +50,6 @@ class BIM_PT_webui(Panel):
|
|||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("bim.kill_websocket_server")
|
row.operator("bim.kill_websocket_server")
|
||||||
|
|
||||||
|
row = layout.row()
|
||||||
|
row.operator("bim.disconnect_websocket_server")
|
||||||
|
|||||||
@@ -18,7 +18,12 @@ def connect_websocket_server(web, port):
|
|||||||
web.set_is_connected(True)
|
web.set_is_connected(True)
|
||||||
|
|
||||||
|
|
||||||
|
def disconnect_websocket_server(web):
|
||||||
|
web.disconnect_websocket_server()
|
||||||
|
web.set_is_connected(False)
|
||||||
|
|
||||||
|
|
||||||
def kill_websocket_server(web):
|
def kill_websocket_server(web):
|
||||||
|
web.kill_websocket_server()
|
||||||
web.set_is_running(False)
|
web.set_is_running(False)
|
||||||
web.set_is_connected(False)
|
web.set_is_connected(False)
|
||||||
web.kill_websocket_server()
|
|
||||||
|
|||||||
@@ -66,12 +66,13 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def connect_websocket_server(cls, port):
|
def connect_websocket_server(cls, port):
|
||||||
def set_thread_loop(url):
|
def start_thread_loop(url):
|
||||||
asyncio.set_event_loop(ws_thread_loop)
|
global ws_thread_loop
|
||||||
asyncio.run(cls.sio_connect(url))
|
ws_thread_loop = asyncio.new_event_loop()
|
||||||
|
ws_thread_loop.run_until_complete(cls.sio_connect(url))
|
||||||
|
|
||||||
ws_url = "ws://localhost:" + str(port) + "/blender"
|
ws_url = f"ws://localhost:{port}/blender"
|
||||||
wserver_thread = threading.Thread(target=set_thread_loop, args=(ws_url))
|
wserver_thread = threading.Thread(target=start_thread_loop, args=(ws_url,))
|
||||||
wserver_thread.daemon = True
|
wserver_thread.daemon = True
|
||||||
wserver_thread.start()
|
wserver_thread.start()
|
||||||
|
|
||||||
@@ -83,7 +84,15 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
# sio.on("data", test.message_handler, namespace="/blender")
|
# sio.on("data", test.message_handler, namespace="/blender")
|
||||||
|
|
||||||
# await sio.emit("data", {"from": "client"}, 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
|
@classmethod
|
||||||
def kill_websocket_server(cls):
|
def kill_websocket_server(cls):
|
||||||
|
|||||||
Reference in New Issue
Block a user