2017-01-25 4 views
-1

ich versuche, eine Klasse in Python für die Verwaltung von WebSockets zu definieren, diese docu-example ist, was mit amFehler in Python Einstellungsmethode für Rückrufe

dies ist mein Code:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import json 
import websocket 
import thread 
import time 

class WebSocket: 
    def on_message1(self, ws, message): 
     print message 

    def on_error1(self, ws, error): 
     print error 

    def on_close1(self, ws): 
     print "Socket Closed" 

    def start(self): 
     global ws 
     ws.run_forever() 

    def __init__(self, host, port): 
     self.host = host 
     self.port = port 
     websocket.enableTrace(True) 
     self.ws = websocket.WebSocketApp("ws://" + host+":"+port, 
             on_message = on_message1, 
             on_error = on_error1, 
             on_close = on_close1)) 

if __name__ == '__main__': 
    print "Error: create an instance of this class instead!" 

Aber wenn ich führen Sie den Code ich erhalte den Fehler:

File "/home/pi/ABC/CASCADE/WebSocketClientClass.py", line 37, in init

NameError: global name 'on_message1' is not defined it is defined but somehow is not working... why?

dank

+0

Nein, ist es nicht. Sie müssen 'self.on_message1' verwenden. Das gleiche gilt für den Rest ... –

+0

Auch sehe ich keine Notwendigkeit für eine "Klasse". Python! = Java. Benutze einfach Funktionen, wie in deinem Link. In der Tat, ich glaube, Sie können eine Klasse in 'Websocket' beschatten! –

Antwort

1

Sie die Methode definiert innen t Er Klasse WebSocket, so um darauf zuzugreifen, benötigen Sie self, wie folgt:

self.ws = websocket.WebSocketApp("ws://" + host+":"+port, 
            on_message = self.on_message1, 
            on_error = self.on_error1, 
            on_close = self.on_close1)) 
+1

da bist du !! Vielen Dank! –