我正在尝试使用Websockets访问一些数据,但我真的无法理解Websockets文档中提供的示例。
我有以下代码(https://pypi.org/project/websocket_client/),希望将其转换为一个类。
import websocket
import thread
import time
def on_message(ws, message):
print message
def on_error(ws, error):
print error
def on_close(ws):
print "### closed ###"
def on_open(ws):
def run(*args):
for i in range(3):
time.sleep(1)
ws.send("Hello %d" % i)
time.sleep(1)
ws.close()
print "thread terminating..."
thread.start_new_thread(run, ())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
这个想法是将所有的WebSocket功能封装在一个类中,这样我只需要创建该类的对象即可。
我试图开始实现它,但是连这个都无法通过:
class MySocket(object):
def __init__(self):
websocket.enableTrace(True)
self.ws = websocket.WebSocketApp("ws://echo.websocket.org:12300/foo",
on_message = on_message,
on_error = on_error,
on_close = on_close)
def on_message(ws, message):
print message
def on_error(ws, error):
print error
def on_close(ws):
print "### closed ###"
def on_open(ws):
ws.send("Hello %d" % i)
错误从on_message
开始,提示“未解决的引用”。
on_message=self.on_message, on_error=self.on_error, ...
- gil9redself
。换句话说,在on_message
内部,self
将不会指向您对象的实例。 - Евген