gpt4 book ai didi

python - 如何在类中实现websocket?

转载 作者:行者123 更新时间:2023-12-01 09:17:00 26 4
gpt4 key购买 nike

我正在尝试在类中使用 websocket.WebSocketApp,以便稍后可以使用从 websocket 检索的数据:

import requests
from urlparse import (urlparse, parse_qs)
import json
import websocket

class NeuroStream:

def __init__(self, sensor, token):
self._sensor = sensor
self.token = token
self.buf = []
return

def stream(self):
self.ws = websocket.WebSocketApp(
"wss://api.foofoo.com/api/v1/features/" + self._sensor
+ "/real-time/?all=true&access_token=" + self.token,
on_message=self.on_message,
on_error=self.on_error,
on_close=self.on_close)
self.ws.run_forever()

def on_error(self, error):
print(error)

def on_close(self):
print "connection lost"

def on_message(self, message):
message = json.loads(message)
biomarkers = message[u'features']
c1 = biomarkers[u'c1']
self.buf.append(c1)

当我在类的范围之外定义函数 on_error、on_close 和 on_message 时,将 self 替换为 ws 并在它们的调用中省略 self ,它可以工作。但后来我不能使用

self.buf.append(c1)  

这对于以后的使用很关键

编辑:我在错误发生之前以及在有效的情况之前运行的代码:

from NeuroStream import *
ns = NeuroStream('a_sensor', 'a_token')
ns.stream()

我得到的错误是:

'No handlers could be found for logger "websocket"'

我看到了类似的帖子,但没有帮助: Using a websocket client as a class in python

最佳答案

我观察到两个问题。

1) "wss://api.foofoo.com/api/v1/features/"+ self.sensor 应该是 "wss://api.foofoo.com/api/v1/features/"+ self._sensor 因为您在初始化期间定义了 self._sensor =sensor

2) 看起来您正在尝试使用 websocket 库的客户端功能。尝试按如下方式安装 websocket-client,然后重新运行代码。
pip 安装 websocket-client

通过上述两项更改,代码对我有用。

Python 2.7.14 (default, Mar 22 2018, 14:43:05) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from aam import NeuroStream
>>> ns = NeuroStream('a_sensor', 'a_token')
>>> ns.stream()
>>>

关于python - 如何在类中实现websocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com