有一种方法可以使用SSL参数创建websocket,如下所示。
ws = create_connection("ws://{0}/socket{1}".format(ip_addr, cookie),
sslopt={"cert_reqs": ssl.CERT_NONE,
"check_hostname": False,
"ssl_version": ssl.PROTOCOL_TLSv1})
从示例here开始,创建websocket连接的方法之一如下所示。但是,没有给出如何传递SSL参数,如上所述?
使用带有SSL参数的'WebSocketApp'以及将cookie传递给它的方法是什么?
if __name__ == "__main__":
websocket.enableTrace(True)
if len(sys.argv) < 2:
host = "ws://echo.websocket.org/"
else:
host = sys.argv[1]
ws = websocket.WebSocketApp(host,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
答案 0 :(得分:2)
我想出了将cookie传递给连接的方法,如下所示。 cookie在URL本身中编码。注意:请参阅服务器实现的URL组件。 ip_addr,port和cookie可以是本地参数。
url = "ws://{0}:{1}/socket{2}".format(str(ip_addr), str(port), cookie)
创建websocket连接时传递此URL。请参阅原始问题以查看URL的传递位置。
我还发现一个答案传递来自参考here
的SSL参数import ssl
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE,
"check_hostname": False,
"ssl_version": ssl.PROTOCOL_TLSv1})
这些变化都适用于我的情况。