add starting webserver and terminating webserver

This commit is contained in:
Ziad-I
2024-06-11 21:02:12 +03:00
committed by Dion Moult
parent 24662d75e4
commit de7d315eb3
5 changed files with 49 additions and 6 deletions
@@ -28,11 +28,11 @@ class ConnectToWebsocketServer(bpy.types.Operator):
bl_description = "Start/Connect to a Websocket server"
def execute(self, context):
port = context.scene.WebProperties.Webserver_port
port = context.scene.WebProperties.webserver_port
if port == 0:
context.scene.WebProperties.Webserver_port = core.generate_port_number(tool.Web)
context.scene.WebProperties.webserver_port = core.generate_port_number(tool.Web)
port = context.scene.WebProperties.Webserver_port
port = context.scene.WebProperties.webserver_port
core.connect_websocket_server(tool.Web, port)
return {"FINISHED"}
@@ -43,4 +43,5 @@ class killWebsocketServer(bpy.types.Operator):
bl_description = "Kill running websocket server"
def execute(self, context):
core.kill_websocket_server(tool.Web)
return {"FINISHED"}
@@ -31,4 +31,5 @@ from bpy.props import (
class WebProperties(PropertyGroup):
Webserver_port: IntProperty(name="Webserver Port")
webserver_port: IntProperty(name="Webserver Port")
show_webserver_running: BoolProperty(name="Show Webserver Running", default=False)
@@ -35,7 +35,11 @@ class BIM_PT_webui(Panel):
props = scene.WebProperties
row = layout.row()
row.prop(props, "Webserver_port", text="Webserver Port")
row.prop(props, "webserver_port", text="Webserver Port")
if props.show_webserver_running:
row = layout.row()
row.label(text=f"Web Server running on port {props.webserver_port}")
row = layout.row()
row.operator("bim.connect_websocket_server")
+8
View File
@@ -10,5 +10,13 @@ def connect_websocket_server(web, port):
# check if port already has a server listening to it
if web.is_port_available(port):
web.start_websocket_server(port)
web.show_webserver_running()
else:
web.hide_webserver_running()
web.connect_websocket_server(port)
def kill_websocket_server(web):
web.kill_websocket_server()
web.hide_webserver_running()
+30 -1
View File
@@ -22,6 +22,7 @@ import blenderbim.core.tool
from typing import Union, Literal
import socket
import os
import subprocess
import webbrowser
import asyncio
import threading
@@ -32,6 +33,7 @@ CONNECTION_CHECK_DELAY = 10
connected_sockets = set()
websocket_server: websockets.WebSocketServer
ws_thread_loop = asyncio.new_event_loop()
ws_process = None
class Web(blenderbim.core.tool.Web):
@@ -55,12 +57,39 @@ class Web(blenderbim.core.tool.Web):
@classmethod
def start_websocket_server(cls, port):
pass
global ws_process
ws_path = os.path.join(bpy.context.scene.BIMProperties.data_dir, "webui", "app.py")
env = os.environ.copy()
env["FLASK_APP"] = ws_path
ws_process = subprocess.Popen(["flask", "run", str(port), "--debug"], env=env)
@classmethod
def connect_websocket_server(cls, port):
pass
@classmethod
def kill_websocket_server(cls):
global ws_process
if ws_process is None:
print("No webserver running")
return
ws_process.terminate()
ws_process.wait()
print("Webserver terminated successfully")
ws_process = None
@classmethod
def show_webserver_running(cls):
bpy.context.scene.WebProperties.show_webserver_running = True
@classmethod
def hide_webserver_running(cls):
bpy.context.scene.WebProperties.show_webserver_running = False
@classmethod
def get_webui_data(cls):
data = {}