@@ -102,17 +102,20 @@ async def event(self, name, *args):
102
102
103
103
class WebsocketServer ():
104
104
def __init__ (self ):
105
+ self .serve = None
105
106
self .ws = None
106
107
self .events = []
107
108
self .auto_listen_event = None
109
+ self .show_warning = True
108
110
109
111
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" )
111
114
112
115
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 )
114
117
await self ._run_event ("ready" , host , port )
115
- await self . ws . wait_closed ()
118
+ await asyncio . Future ()
116
119
117
120
async def _run_event (self , event_name : str , * args ):
118
121
for event in self .events :
@@ -126,6 +129,14 @@ def start(self, host="0.0.0.0", port=19132, auto_listen_event=True):
126
129
self .auto_listen_event = auto_listen_event
127
130
asyncio .run (self ._run_server (host , port ))
128
131
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
+
129
140
def event (self , func ):
130
141
"""イベントを登録するデコレーター"""
131
142
if func .__name__ .startswith ("on_" ):
0 commit comments