想让物联网设备与 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 2020-09-30 15:43:30 +08:00
查查资料,看看摩拜单车用啥协议,我不觉得你的设备会比摩拜单车多
|
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 1
看设备量,我认为原则上不应该让设备和 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 |