WebSocketHandler没有调用初始化

时间:2013-10-14 19:31:09

标签: websocket tornado

我正在尝试做的是,有一个对象(它是一个在单独的线程中运行的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")

然而,它不起作用。永远不会调用'initialize'。我究竟做错了什么?

__init__()

也不起作用。 或者是否有另一种方法从RadioSocketHandler调用其自己的类之外的函数? 我是Python fyi的新手

1 个答案:

答案 0 :(得分:4)

好吧,我让它使用以下内容:

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()