![](/img/trans.png)
[英]close method of Tornado's WebsocketClientConnection doesn't invoke on_close method of Websocket Handler
[英]WebSocket Handler on_close method async Implementation tornado
我正在使用tornado版本6.0.2構建Web應用程序。 我正在使用WebSocket處理程序來設置與客戶端的連接。
服務器端實現示例:
from tornado import websocket
import connectionhandler
class WebSocketHandler(websocket.WebSocketHandler):
def initialize(self, connectionhandler):
self.connectionhandler = connectionhandler
async def open(self):
print("WebSocket opened.")
await self.connectionhandler.connection_established_websocket()
async def on_close(self):
print("WebSocket closed.")
await self.connectionhandler.connection_closed_websocket()
客戶端實現示例:
ws = websocket.create_connection("ws://localhost:80/ws?")
ws.close()
當客戶端建立連接時,它調用open方法,一切正常。
但是當客戶端關閉連接時,我得到錯誤on_close從未等待過。
當我刪除本機協程on_close方法正在工作。
題 :
如何為on_close方法添加本機協程或從on_close()調用異步方法?
on_close
並不意味着是異步函數。 要從on_close
運行異步函數,請使用IOLoop.add_callback
。
from tornado.ioloop import IOLoop
def on_close(self):
IOLoop.current().add_callback(
self.connectionhandler.connection_closed_websocket
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.