Skip to content

Commit 69c3802

Browse files
authored
Refactor WebSocket server class
1 parent ca627b5 commit 69c3802

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

py_mcws/server.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,20 @@ async def event(self, name, *args):
102102

103103
class WebsocketServer():
104104
def __init__(self):
105+
self.serve = None
105106
self.ws = None
106107
self.events = []
107108
self.auto_listen_event = None
109+
self.show_warning = True
108110

109111
def _warning(self, msg: str):
110-
print(f"\033[33m[警告] {msg}\033[0m")
112+
if self.show_warning:
113+
print(f"\033[33m[警告] {msg}\033[0m")
111114

112115
async def _run_server(self, host: str, port: int):
113-
self.ws = await websockets.serve(self._receive, host, port)
116+
self.serve = await websockets.serve(self._receive, host, port)
114117
await self._run_event("ready", host, port)
115-
await self.ws.wait_closed()
118+
await asyncio.Future()
116119

117120
async def _run_event(self, event_name: str, *args):
118121
for event in self.events:
@@ -126,6 +129,14 @@ def start(self, host="0.0.0.0", port=19132, auto_listen_event=True):
126129
self.auto_listen_event = auto_listen_event
127130
asyncio.run(self._run_server(host, port))
128131

132+
async def close(self):
133+
"""websocket サーバーを停止する"""
134+
if self.serve:
135+
await self.serve.close()
136+
raise Exception("Websocketサーバーを停止しました。")
137+
else:
138+
self._warning("WebSocketサーバーが起動していません。")
139+
129140
def event(self, func):
130141
"""イベントを登録するデコレーター"""
131142
if func.__name__.startswith("on_"):

0 commit comments

Comments
 (0)