我试图通过使用我自己的证书颁发机构将我的python paho mqtt客户端连接到我的代理.我生成了必要的文件并配置了我的RabbitMQ代理来使用它们.我的想法是客户端验证服务器,但客户端本身不需要进行身份验证.
我知道这些应该正常工作,因为我还有一个正常工作的scala paho mqtt客户端.
目前我正在mac上直接从终端运行该文件.我正在使用由python 3.5.2创建的virtuanenv,我有一个文件subscribe.py
import paho.mqtt.client as paho
import ssl
def on_message(clnt, userdata, msg):
print(msg.topic+" "+str(msg.payload))
def on_connect(client, userdata, rc):
print("Connected with result code "+str(rc))
mqttc.subscribe("foo")
mqttc = paho.Client()
mqttc.on_message = on_message
mqttc.on_message = on_message
mqttc.tls_set("ca.cert.pem", tls_version=ssl.PROTOCOL_TLSv1_2)
mqttc.connect("address", 8883, 60)
mqttc.loop_forever()
Run Code Online (Sandbox Code Playgroud)
当我运行该文件时,我收到以下错误
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)
Run Code Online (Sandbox Code Playgroud)
我也试图改变tls_version到TLSv1_1,TLSv1并留下它完全.ca.cert.pem在同一文件夹中的subscribe.py文件
paho网站上的例子看起来非常简单,所以我在这里缺少什么?为什么我在python客户端上收到错误?
我正在使用 Jasmine 对 JavaScript 进行单元测试,但遇到了一些问题。
我有一个大文件要测试,它有很多依赖项,而这些依赖项有自己的依赖项。由于上述依赖关系,我想尽可能地模拟。问题就在这里。如何模拟构造函数以使其包含属于它的方法?
假设我正在测试createMap类的方法Map:
在该createMap方法中,它使用调用Layers类构造函数
var layers = new Layers()
Run Code Online (Sandbox Code Playgroud)
我正在监视它使用
spyOn(window, 'Layers').and.callThrough()
Run Code Online (Sandbox Code Playgroud)
这工作正常,但稍后在createMap它调用的方法中,layers.addLayer()whereaddLayer是Layers类的方法。问题是,因为我嘲笑了Layers调用,所以它无法识别该addLayer方法。
有没有办法模拟它以便它包含被调用类的所有方法,或者是我唯一的选择是存根整个Layers类还是不模拟它?
或者什么是处理这个问题的好方法?我试过,spyOn(Layers, 'addLayer')但那里说没有addLayer找到方法。
如果有点混乱,我很抱歉。我很难思考我应该如何问它。