簡體   English   中英

Tornado Websocket回調on_message

[英]Tornado websocket callback on_message

我實現了在我的python應用程序中運行兩個線程。 現在,我想向on_message添加一個回調函數,以處理另一個線程中的接收消息。

這是我的代碼:

import tornado.websocket
import tornado.web
import message.MessageHandler

from message.messageConstructor import MessageConstructor


class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print 'new connection'
        self.send(message.MessageHandler.serialize(MessageConstructor('Engine1', '100')))
        self.send("CONNECT!")

    def on_message(self, rawMessage):
        print rawMessage
        obj = message.MessageHandler.deserialize(rawMessage)
        callback(message)

    def on_close(self):
        print 'connection closed'

    def check_origin(self, origin):
        return True

    def send(self, message):
        self.write_message(message)

和創作:

import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web
import socket

from websocket import connectionHandler


class WebSocketConnection():
    def __init__(self, port, callback):
        self.socketHandler = connectionHandler.WebSocketHandler

        application = tornado.web.Application([
            (r'/', self.socketHandler),
        ])

        callback("World")

        http_server = tornado.httpserver.HTTPServer(application)
        http_server.listen(7004)
        myIP = socket.gethostbyname(socket.gethostname())
        print '*** Websocket Server Started at %s***' % myIP
        tornado.ioloop.IOLoop.instance().start()

    def send(self, message):
        self.socketHandler.send(message)

如何提供對未實例化的WebsocketHandler實例的回調?

您可以使用RequestHandler.initialize通過應用程序將配置傳遞給處理程序:

class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def initialize(self, callback):
        self.callback = callback

app = Application([('/', WebSocketHandler, dict(callback=callback))])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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