我正在制作一个需要从WebSocket安全服务器接收实时消息的程序 .
我尝试使用JavaScript执行此任务,它工作得很漂亮!
但JavaScript并没有试图在Python中做同样的事情 . 但没有成功 .
我正在努力解决的错误是:
[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:777)
我认为JavaScript没有这个问题,因为它使用浏览器来验证连接 .
我在用什么:
-
Python 3.6.4
-
Anaconda3
-
Windows 10
我真的不知道该怎么办 . 我已经搜索了很多 .
我可以通过更改代码来解决这个问题吗?
我应该使用另一个lib来 Build 连接吗?
是Python还是Anaconda的问题?
这是一些我无法弄清楚的新手错误吗?
这是我的Python代码:
import websocket
import websocket
import threading
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)
data = ws.recv()
print(data)
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run, ())
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://stream.binance.com:9443/ws/bnbbtc@ticker",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
如果有人有兴趣,这是我的JavaScript代码:
var socket = new WebSocket('wss://hostname:port/dir/dir@ticker');
socket.onopen = function(event)
{
console.log('connected');
}
socket.onmessage = function(e){
var server_message = e.data;
console.log(server_message);
}
1 回答
这是Anaconda的错误,尝试删除certifi:
conda remove certifi
.如果它不起作用,您可以从此问题获得更多信息:https://github.com/ContinuumIO/anaconda-issues/issues/494#issuecomment-155097614
或者您可以在python脚本中禁用ssl验证: