我正在尝试使用Paho MQTT Javascript客户端连接IBM Watson物联网平台,如下面的示例代码所述。
var客户端=新消息传递.客户端(“myOqgId.messaging.internetofthings.ibmcloud.com”,8883,“myclientid_”+方法用于(数学.随机()*One hundred.,10));//如果websocket/mqtt连接由于任何原因断开,将被调用客户端.onConnectionLost=函数(responseObject){//根据您的场景,您可以在这里实现一个重新连接逻辑警报(“连接了:”+responseObject.errorMessage);};//每当收到订阅消息时调用客户端.onMessageArrived=函数(消息){//对你收到的推送信息做一些处理$(“#消息”).附加(' < span >主题:“+消息.destinationName+“|”+消息.payloadString+' < / span > < br / > ');};/ /连接选项var选项={用户名:API-关键在这里,密码:身份验证令牌在这里,超时:3.,//如果连接已成功建立,则调用调用onSuccess:函数(){警报(“连接”);},//如果无法建立连接,将被调用onFailure:函数(消息){警报(“连接失败:“+消息.errorMessage);}};//创建一个新的消息。消息Object and sends it to the HiveMQ MQTT Brokervar发布=函数(有效载荷,主题,qos){//发送你的消息(也可以序列化为JSON或protobuf或只使用字符串,没有限制)var消息=新消息传递.消息(有效载荷);消息.destinationName=主题;消息.qos=qos;客户端.发送(消息);}
但不能连接。我得到这个错误:WebSocket连接到“ws://myOrgIdXYZ.messaging.internetofthings.ibmcloud.com:8883/mqtt”失败:错误在WebSocket握手:net::ERR_CONNECTION_RESET
请尝试使用Paho Mqtt客户端连接IBM沃森物联网的任何人。
您应该对代码进行以下更改。
<脚本类型=“text / javascript”>varclientId=“myOrgId:”+数学.随机().toString(16).字符串的子串(2,8);var客户端=新消息传递.客户端(“myOqgId.messaging.internetofthings.ibmcloud.com”,1883,clientId);//如果websocket/mqtt连接由于任何原因断开,将被调用客户端.onConnectionLost=函数(responseObject){//根据您的场景,您可以在这里实现一个重新连接逻辑警报(“连接了:”+responseObject.errorMessage);};//每当收到订阅消息时调用客户端.onMessageArrived=函数(消息){//对你收到的推送信息做一些处理$(“#消息”).附加(' < span >主题:“+消息.destinationName+“|”+消息.payloadString+' < / span > < br / > ');};/ /连接选项var选项={用户名:API-关键在这里,密码:身份验证令牌在这里,超时:3.,//如果连接已成功建立,则调用调用onSuccess:函数(){警报(“连接”);},//如果无法建立连接,将被调用onFailure:函数(消息){警报(“连接失败:“+消息.errorMessage);}};//创建一个新的消息。消息Object and sends it to the HiveMQ MQTT Brokervar发布=函数(有效载荷,主题,qos){//发送你的消息(也可以序列化为JSON或protobuf或只使用字符串,没有限制)var消息=新消息传递.消息(有效载荷);消息.destinationName=主题;消息.qos=qos;客户端.发送(消息);}客户端.连接(选项);脚本>
您可以看到我在ClientId中进行了更改。IBM沃森物联网将只接受以下格式的客户端标识如果您没有使用沃森物联网库.
var clientId =“OrgId:”+ RandomString;
如果您正在使用IBM沃森物联网库客户端Id可以是任何值。我在node。js中实现