callback an ein nicht instanziertes Objekt übergeben.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ipad0214
User
Beiträge: 1
Registriert: Freitag 13. Mai 2016, 08:46

Hallo zusammen,

ich bin ganz frisch in dem Forum und verzweifel gerade an einem Problem:

Ich versuche eine Kommunikationsschnittstelle per Websocket zu erstellen.
der Websockt funktioniert, ich benutze den tornado websocket.

in der on_message function würde ich gerne eine callback aufrufen.
Leider geht das nicht, da der requesthandler nicht instanziert wird. ich kann diesen parameter also nicht im Konstruktor übergeben,
da er vom tornado framework aufgerufen wird.

Da ich relativ neu bei python bin suche ich nun einen weg um eine callback an das spätere Objekt übergeben kann.

gibt es da eine Möglichkeit?

ich habe bisher das versucht, was aber meiner Meinung nach gar nicht funktionieren kann, da es noch keine Instanz gibt somit auch kein self:

Code: Alles auswählen

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

        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()
Anders gefragt habt ihr bessere Erfahrungen oder Beispiele für einen einfachen echo-websocket in python?
Also Equivalentes Beispiel nehme ich gerne fleck aus c# oder der js websocket.

Vielen Dank im vorraus.

lg
Ipad
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Ipad0214: ich weiß nichts mit Deinem Code anzufangen. Irgendwie wird da nicht versucht ein callback aufzurufen. Kannst Du ein Beispiel zeigen, das auch Dein Problem zeigt? Was ist der callback? Warum kannst Du ihn nicht aufrufen? Wer setzt den callback? Was hat das mit Instanzierung zu tun? Du kannst ja sehr wohl das Websocket-Objekt in der Initialisierungsmethode initialisieren auch wenn Du das Objekt nicht selbst erzeugst.
BlackJack

@Ipad0214: Der `WebSocketHandler` erbt von `RequestHandler`, hat also genau so eine `initialize()`-Methode, die man überschreiben kann und wo man Werte von aussen in den Handler bekommt.
Antworten