在端口443上使用erlang mqtt websocket客户端连接ibm bluemix watson IoT

在端口443上使用erlang mqtt websocket客户端连接ibm bluemix watson IoT,websocket,erlang,ibm-cloud,mqtt,watson-iot,Websocket,Erlang,Ibm Cloud,Mqtt,Watson Iot,Websocket协议上的MQTT 我正在尝试使用端口443(ssl/tls)上的erlang mqtt WebSocket连接IBM Watson IoT服务。但是,我收到了一个错误 IBMDOS()表示它支持websocket连接。除了正常的tcp连接(我成功地连接了)之外,没有提到websocket的使用(教程/指南) 我想要一个简单的分步文档,比如Amazon IoT(),用于作为客户端应用程序的websocket连接 我正在计算我认为可能不合适的URL/URI,即ws(s)://主机:

Websocket协议上的MQTT

我正在尝试使用端口443(ssl/tls)上的erlang mqtt WebSocket连接IBM Watson IoT服务。但是,我收到了一个错误

IBMDOS()表示它支持websocket连接。除了正常的tcp连接(我成功地连接了)之外,没有提到websocket的使用(教程/指南)

我想要一个简单的分步文档,比如Amazon IoT(),用于作为客户端应用程序的websocket连接

我正在计算我认为可能不合适的URL/URI,即ws(s)://主机:端口/path。 目前,我将其命名为wss://fybr123mqtt.mybluemix.net (其中,fybr123mqtt是我的应用程序名)。 通过mqtt连接到IBM Watson IoT的主机、端口和路径是什么? 以及如何随主机发送其他参数,如“客户端id”、“用户名”、“密码”、“身份验证令牌”?
另外,建议使用一些用于mqtt的ErlangWebSocket客户端,并提及访问websocket服务器的简单步骤。Erlang mqtt客户端(emqttc)不支持websocket。

这里清楚地描述了连接过程:
console.ng.bluemix.net/docs/services/IoT/devices/mqtt.html

您提到的URL不正确:wss://fybr123mqtt.mybluemix.net

步骤2:将您的设备从console.ng.bluemix.net/docs/services/IoT/IoT Platform_task.html#设备连接到Watson IoT平台时,它显示以下内容:

连接设备时需要以下信息:

URL: org_id.messaging.internetofthings.ibmcloud.com
Where org_id is the ID of your Watson IoT Platform organization.
Port:
    1883
    8883 (encrypted)
    443 (websockets)
Device identifier: d:org_id:device_type:device_id
This combination of parameters uniquely identifies your device.
Username: use-token-auth
This value indicates that you are using token authorization.
Password: Authentication token
This value is the unique token that you defined or that was assigned to your device when you registered it.
组织id、设备类型、设备id和密码在您完成步骤1:向Watson IoT平台注册设备后提供

注意:clienID是设备标识符:d:org\u id:Device\u type:Device\u id

我成功地使用了mqttfx、EclipsePAHO、mosquitto,还有许多其他免费的mqtt客户机可以使用

此外,还有一些很好的教程(配方),可以帮助您使用Java、Pyhton等IBM客户机库入门。作为示例,您可以查看: “ibm.com/developerworks/cloud/library/cl mqtt-bluemix-iot-node-red-app/”

下面是一个使用MOSQUITO的网关设备类型示例 “developer.ibm.com/recipes/tutorials/using-mosquitto-as-a-gateway-for-watson-iot/”

让我们不要忘记NodeRed中的客户端节点,它们非常易于使用

如果你在这方面还需要帮助,请告诉我

谢谢,
丹尼尔

网址:
wss://6DigitOrgID.messaging.internetofthings.ibmcloud.com:8883

使用NodeJS可以很好地工作。我不指定进一步的端点

[BaseClient:connect] Connecting to IoTF with host : wss://6DigitOrgID.messaging.internetofthings.ibmcloud.com:8883
[DeviceClient:connect] DeviceClient Connected
connected
[DeviceClient:publish] Publishing to topic iot-2/evt/myevt/fmt/json with payload {"radiation":1} with QoS 2
这是基于带有
“enforce ws”:true的示例得出的

我修改了该客户端并使用443进行了测试:

[BaseClient:connect] Connecting to IoTF with host : wss://6DigitOrgID.messaging.internetofthings.ibmcloud.com:443
[DeviceClient:connect] DeviceClient Connected
connected
[DeviceClient:publish] Publishing to topic iot-2/evt/myevt/fmt/json with payload {"radiation":1} with QoS 2

我不知道erlang的任何样品

您是否已通过websocket或tcp建立连接??我认为您正在回答正常的tcp连接。连接的打开必须以协议ws://websocket客户端的主机开始。此外,端点是必需的,我找不到。。。比如说,**wss://HOST:443/PATH/TO/PATH **.wss也可以工作。请参阅以下@amadain的评论。参考主题,设备发布到事件主题的格式为:iot-2/evt/event_id/fmt/format_string event_id:事件的id,例如状态。事件ID可以是MQTT中有效的任何字符串。如果未使用通配符,订阅服务器应用程序必须在其订阅主题中使用此字符串以接收在其主题上发布的事件。format_string:定义消息有效负载的内容类型的字符串,以便消息接收方可以确定如何解析内容。https REST API位于443。。。我不明白套接字也是这样。它是443,协议是wss。wss://OrgID.messaging.internetofthings.ibmcloud.com:443. 对于java客户端,有一个“Websockets=true”设置,但我很难让它正常工作。我稍后再看。谢谢你的回复。正如您所说,我们不需要指定进一步的端点。我们应该如何发送“客户id”、“用户名”、“密码”?我们必须在标题中给出所有这些细节吗?我对erlang一无所知。对于NodeJ,它与通过mqtt连接相同,只是对wss的协议更改。您可以查看nodejs示例代码。