2016-05-13 2 views
0

У меня было два потока, работающих в моем приложении python. Теперь я хочу добавить функцию обратного вызова в on_message для обработки принимающего сообщения в другом потоке.Tornado websocket callback 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?

ответ

1

Вы можете использовать RequestHandler.initialize пройти конфигурацию с помощью Приложения для обработчиков:

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

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

идеально, спасибо большое! – Ipad