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

推荐订阅源

GbyAI
GbyAI
Cloudbric
Cloudbric
aimingoo的专栏
aimingoo的专栏
D
Docker
量子位
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - Franky
S
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
I
InfoQ
罗磊的独立博客
P
Palo Alto Networks Blog
Security Latest
Security Latest
K
Kaspersky official blog
Apple Machine Learning Research
Apple Machine Learning Research
I
Intezer
C
Cybersecurity and Infrastructure Security Agency CISA
TaoSecurity Blog
TaoSecurity Blog
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
Simon Willison's Weblog
Simon Willison's Weblog
V
V2EX
N
Netflix TechBlog - Medium
爱范儿
爱范儿
S
Secure Thoughts
S
Securelist
MyScale Blog
MyScale Blog
Webroot Blog
Webroot Blog
IT之家
IT之家
Cyberwarzone
Cyberwarzone
Martin Fowler
Martin Fowler
Project Zero
Project Zero
NISL@THU
NISL@THU
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hacker News: Front Page
H
Heimdal Security Blog
博客园_首页
V
Vulnerabilities – Threatpost
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Announcements
Recent Announcements
Blog — PlanetScale
Blog — PlanetScale
The Cloudflare Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
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 模式.