gpt4 book ai didi

WebSocketHandler 不调用初始化

转载 作者:行者123 更新时间:2023-12-02 22:19:40 25 4
gpt4 key购买 nike

我想做的是拥有一个对象(它是一个在单独线程中运行的 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 还很陌生,仅供引用

最佳答案

好吧,我可以使用以下内容:

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 函数提供参数。我忘了 super()

关于WebSocketHandler 不调用初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com