Для тестирования клиента WebSocket я пишу небольшой сервер WebSocket торнадо, который находится в указанном потоке и может быть запущен и остановлен во время выполнения теста.Вот что я придумала до сих пор:
class SocketHandler(tornado.websocket.WebSocketHandler):
def __init__(self, application, request, **kwargs):
super().__init__(application, request, **kwargs)
self.authenticated = False
def check_origin(self, origin):
return True
def open(self):
pass
def on_message(self, message):
pass
def on_close(self):
pass
application = tornado.web.Application([
(r"/ws", SocketHandler),
])
class WebSocketServer(threading.Thread):
def __init__(self, port):
threading.Thread.__init__(self, name='WebServer')
self.port = port
self.ioloop = None
def run(self):
self.ioloop = tornado.ioloop.IOLoop()
http_server_api = tornado.httpserver.HTTPServer(application)
http_server_api.listen(self.port)
self.ioloop.start()
http_server_api.stop()
self.ioloop.clear_instance()
def stop(self):
self.ioloop.add_callback(self.ioloop.stop)
Запуск сервера работает хорошо:
server = WebSocketServer(8888)
server.start()
Я могу подключиться к серверу с помощью любого клиента WebSocket.К сожалению, когда я останавливаю сервер:
server.stop()
поток закрывается, порт прослушивания сервера удаляется, но все установленные соединения WebSocket остаются нетронутыми.Как я могу закрыть все установленные соединения?Спасибо за помощь!