我想做的是有一个对象(它是一个在单独线程中运行的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 函数提供参数。我忘记了超级()