WebSocketHandler 不调用 initialize



我想做的是有一个对象(它是一个在单独线程中运行的gstreamer进程)能够调用WebSocketHandler的write_message()函数

这是我目前拥有的一段代码

app = tornado.web.Application([
    (r'/', RadioSocketHandler),
])

class RadioSocketHandler(tornado.websocket.WebSocketHandler):
    def initialize(self):
        self.player = MusicPlayer(self)
        thread.start_new(self.player.start(), ())
class MusicPlayer(object):
    websocket_handler = None
    def __init__(self, sockethandler):
        self.websocket_handler = sockethandler
        self.websocket_handler.write_message("success")

但是,它不起作用。从不调用"初始化"。我做错了什么?

__init__()

也不起作用。或者有没有另一种方法可以从 RadioSocketHandler 调用它自己的类之外的函数?我对 Python 很陌生 fyi

好的,

我得到了以下内容:

app = tornado.web.Application([
    (r'/', RadioSocketHandler, {'player': player}),
])
class RadioSocketHandler(tornado.websocket.WebSocketHandler):
    def __init__(self, *args, **kwargs):
        self.musicplayer = kwargs.pop('player')
        self.musicplayer.set_sockethandler(self)
        super(RadioSocketHandler, self).__init__(*args, **kwargs)
class MusicPlayer(object):
    websocket_handler = None
    def set_sockethandler(self, handler):
        self.websocket_handler = handler

我不得不以不同的方式为 init 函数提供参数。我忘记了超级()

相关内容

  • 没有找到相关文章

最新更新