惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
The GitHub Blog
The GitHub Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
量子位
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
T
Tailwind CSS Blog
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
G
Google Developers Blog
M
MIT News - Artificial intelligence

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
Snap! 使用笔记: MQTT 插件
种瓜 · 2023-02-22 · via 夜行人

文章目录

前言

本文是在 Snap! 中使用 MQTT 插件的笔记。

对 Snap! 不了解的读者,推荐 @angilent 的图形编程工具 Snap! 初探

Snap! 内置了 MQTT 插件:

有了 MQTT 插件,我们就可以在 Snap! 与其他平台之间传递消息。

一旦能够在对象之间异步(pub/sub)传递消息,几乎就可以做任何事情

消息:应将计算视为对象的固有功能,可以通过发送消息统一调用它们。 – Smalltalk背后的设计原则

如何使用

最简单的方式是从这个例子开始。

我将其视为在 Snap! 中使用 MQTT 插件的最佳实践。

注意事项

其中有两处值得注意:

MQTT connect 积木下拉菜单里内置了四个 MQTT broker。如果你使用自己的 MQTT broker (比如我的例子), 你需要自己填入 MQTT broker 的 url。具体规则可以右键积木, 查看帮助(帮助里也解释了 options, 第一个参数是用户名,第二个参数是密码…)。 如果你使用自己的 broker ,要确保它支持 wss 连接。

MQTT subscribe 积木中, on each message run 后边的参数是积木(作为回调函数),每当收到相关主题的消息,就执行这些积木参数。回调函数会传入两个参数(按顺序), 第一个参数是 payload, 第二个参数是 topic 。 我使用 broadcast 作为通用的回调函数,它负责将消息广播出去,然后由事件积木处理,这样的好处是,可以动态地决定如何处理 MQTT 消息,而不必直接修改 subscribe 回调函数(多次订阅会导致累积,除非重新 connect)。

从这个例子开始Snap! 的 MQTT 之旅,或许是不错的选择。

更多 MQTT 插件的使用方法,可以查看 MQTT 插件最后一个积木(MQTT Extension Examples)的定义。

进阶: client-server 模式

MQTT 协议围绕 pub/sub 构建, 是一种异步消息系统, 有时候我们想要同步的 client-server 模式(HTTP 就采用了 client-server 模式): 你希望发送一个请求,然后得到这个请求被处理的结果(request-response)。

基于 pub/sub 可以构建出 client-server 消息模式。 Snap! 的 MQTT 插件内置了实现 client-server 的积木。这并不是 MQTT 协议的内置模式,所以它无法与其他 MQTT 客户端协作,只能在不同的 Snap! 页面之间协作。

如果你想基于 MQTT 构建更为通用的 client-server 系统。 可以尝试 Dynatalk, 它构建在 MQTT 之上, 但支持 client-server 模式.