
想让物联网设备与 Web 服务器的应用端进行通信,常用的通信协议,除了 mqtt,http 还有哪些比较合适的?
应用层协议有一个 WebSocket,WebSocket 协议用在物联网设备与 Web 服务器之间的实现通信合适么?
1 Unmurphy 2020-09-30 15:40:35 +08:00 xmpp |
2 wysnylc 2020-09-30 15:42:16 +08:00 mqtt http2/http3 websocket |
3 qiayue PRO 查查资料,看看摩拜单车用啥协议,我不觉得你的设备会比摩拜单车多 |
6 lewis89 2020-09-30 15:45:33 +08:00 websocket 你确定要在物联网这种低功耗的玩意上 保持长连接? |
8 12101111 2020-09-30 15:50:38 +08:00 mqtt over Websocket |
10 tctc4869 OP mqtt over Websocket ? mqtt 与 WebSocket 的融合? |
11 crasa 2020-09-30 15:56:41 +08:00 mqtt +1 |
12 server 2020-09-30 16:01:27 +08:00 看 lz 描述, 还是直接上方案 自建基于 emqx 吧 ,走平台阿里 腾讯 都行. lorawan nb-iot 看钱下单 |
13 Bijiabo 2020-09-30 16:01:51 +08:00 看设备量,我认为原则上不应该让设备和 Web 应用服务器直接通讯。 设备 MQTT 协议到 IoT Hub,分发数据或者做处理。然后 Web 服务器再从处理好的数据中拿结果,或者通过 IoT Hub 提供的能力与设备通讯。 不是直接通讯不行,要考虑安全、量产一系列问题。 |
14 Gitizen 2020-09-30 16:01:54 +08:00 感觉 Mqtt over Websocket 可以吧,我最近也是想这样整,参考 Adafruit IO 的 Web 端,就是一个 Javascript mqtt 客户端,就是 Mqtt over Websocket 。 |
16 tctc4869 OP |
17 kra 2020-09-30 16:05:54 +08:00 mqtt |
19 lzyliangzheyu 2020-09-30 16:13:33 +08:00 MQTT 算是用的比较多的吧,基于 TOPIC 的消息订阅机制,控制好 KEEPLIVE,性能开销也不大 |
20 crasa 2020-09-30 16:23:54 +08:00 @tctc4869 两个设备相互订阅。数据量小的话,可以直接传输数据;数据量大的话可以只传输消息 key,设备拿到 key 之后用你所说的 web 应用服务器对消息的 key 进行数据处理,返回到指定设备。 鄙人拙见而已,可以再参考下面大佬的回复 |
21 tctc4869 OP @crasa 按你这样说的话,为了使在 mqtt 中两个设备之间能相互一对一通信,就得自己定义一下 mqtt 服务端中中某些 TOPIC 的消息处理流程 |
22 soulzz 2020-09-30 16:49:33 +08:00 自定义协议完全可以 设备直接发送字节流 后端 netty 解完全可以 |
23 dndx 2020-09-30 16:50:34 +08:00 MQTT 非常方便,还可以用阿里云的 MQTT 服务,量小的话免费额度就够了,非常稳定。 |
24 clf 2020-09-30 16:51:20 +08:00 MQTT 比较方便,现成的平台:EMQ |
25 stranger75 2020-09-30 17:03:59 +08:00 物联网内系统交互的话无脑推荐阿里云的 MQTT -doge |
26 manhere 2020-09-30 17:08:25 +08:00 coap |
27 ihidchaos 2020-09-30 17:16:37 +08:00 via Android mqtt-sn,coap,lwm2m |
28 opengps 2020-09-30 17:24:03 +08:00 via Android 实际上物联网并非直接跟 web 通信,而是跟 socket 服务端通信,转发一层消息实现的物联网设备跟 web 通信 |
29 youla 2020-09-30 17:26:35 +08:00 我正在做一个这样一个项目,用的是 websocket 。 |
30 janxin 2020-09-30 17:28:40 +08:00 可以 |
31 LLaMA2 2020-09-30 17:46:45 +08:00 如果设备不用在意功耗问题,直接 socket 就好,不过建议你吧 socket server 剥离出来,设备和 web 服务都作为 client 端连接到 server 。这样是为了以后拓展 socket server,例如更换实现,集群,HA 能特性,而不用更改已有的 web 服务 如果设备在意功耗,MQTT 就好,套路和上面一样。设备和 web 都作为 mqtt client,中间架 mqtt broker |
32 kerro1990 2020-09-30 18:19:16 +08:00 摩拜用的微软 azure 的 IOT 服务 |
34 Bijiabo 2020-09-30 19:49:53 +08:00 @tctc4869 这种场景,使用 MQTT,配合云平台的规则引擎,直接把一个设备的数据转到另一个设备的 topic 中,我看一些业务场景的实现是这样做的。 这些能力,云平台普遍会提供。 置于安全,主要是设备 MQTT 链接时候的鉴权,认证 key 怎么来的,是需要注意的 |
35 geekvcn 2020-09-30 19:55:03 +08:00 我觉得 QUIC 挺适合,因为物联网设备流量很小,也不怕运营商的 UDP Qos |
36 chihiro2014 2020-09-30 20:09:24 +08:00 RSocket |
39 rbe 2020-09-30 20:46:35 +08:00 mqtt 足够轻量,且能发又能收,基本能近似达到长连接的效果了。用阿里云的 mqtt 服务或者自建 emqx broker,qos 1 就能保证不丢消息。lz 应该说明一下为啥不愿意用 mqtt 啊? |
40 rockyou12 2020-09-30 20:49:17 +08:00 mqtt 功能强又够轻量,生态还非常成熟,不是很特别的业务想不到不用的理由 |
41 maitiantuzi 2020-09-30 22:08:24 +08:00 可以开发个自己的网关,采集到设备数据后做持久化或者分发出去,比如通过 Kafka |
42 hotsymbol 2020-10-01 00:06:48 +08:00 kafka, socket, mqtt, grpc over http |
43 tctc4869 OP @Bijiabo 那有 N 对设备要通过 mqtt 服务端进行一对一通信怎么办,在同一个 Topi 内 c 的发布消息话,一个设备发布消息不就成了广播了,本来就是要一对一通信的 |
44 adek06 2020-10-01 00:50:49 +08:00 MQTT +1 用 EMQX 自建 |
45 des 2020-10-01 01:22:28 +08:00 mqtt 、nats 、sqs 、nsq 另外你是觉得 mqtt 不合适吗? |
46 Bijiabo 2020-10-01 01:26:47 +08:00 via iPhone @tctc4869 每个设备都有自己的 N 个 topic,每个 topic 对应不同用途。云端规则引擎根据消息内容标识,以及业务逻辑指定的规则,进行消息的转发,可能是 A 设备的消息转到 B 设备的特定 topic,也可能是直接转到队列进行消息处理,也可能直接存储到数据库。 |
47 Gitizen 2020-10-01 03:01:03 +08:00 @ungrown 这样可以方便通过防火墙,一般在网页用比较多。 物联网硬件用原生 MQTT 连接服务器 MQTT Broker,Web 应用的前端用 Websocket MQTT 连接 Broker TCP MQTT Client <----> MQTT Broker <----> Websocket MQTT Client 设备通过 MQTT 传来的数据实时在 Web 页面更新。 |
48 aguesuka 2020-10-01 09:53:54 +08:00 via Android 我司是国内最大的电表厂。用的是 socket 透传=> 采集器 => 主站。 没有做过的人最好不要对不熟悉的领域发表意见。 |
50 tctc4869 OP @Bijiabo 这样的话,就得定制一下 mqtt 服务端的某些特定 topic 下的通信处理规则,似乎这是要写代码进行配置处理的情况啊,不知道有没有无编程代码的配置方式、 |
53 tctc4869 OP |
54 way2explore2 2020-10-01 12:50:17 +08:00 相信我。用最成熟的协议 mqtt mqtt 完全可以做轻量 im, |
56 wudaye 2020-10-02 02:04:12 +08:00 via Android 我们当时毫无经验,用的最简单粗暴可能也是最蠢的方式,直接 netty 和设备互相编解码 tcp 上的字节流,二进制协议用的交通部的一套部标协议 |
59 tctc4869 OP |