簡體   English   中英

WebSocket Handler on_close方法異步實現龍卷風

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM