自建Freeboard实例如何对接PubNub?MQTT插件尝试失败求助
自建Freeboard对接PubNub的解决方案
你之前尝试用MQTT插件连接PubNub走不通其实很正常——PubNub虽支持MQTT,但需要额外配置网关,且Freeboard的MQTT插件和PubNub的参数匹配容易出问题。更简单可靠的是直接用Freeboard的PubNub专属支持,下面给你两种可行方案:
方案一:使用Freeboard内置PubNub数据源(推荐)
如果你的Freeboard是官方标准版本,默认已经集成了PubNub数据源支持,步骤如下:
- 打开仪表盘,点击右上角
+ ADD按钮,选择DATASOURCE - 在数据源类型下拉菜单里找到
PubNub(如果没看到,可检查Freeboard版本,或手动引入PubNub插件) - 填写核心配置参数:
- Subscribe Key:你PubNub账号的订阅密钥(在PubNub控制台的应用详情里能找到)
- Channel:需要订阅的PubNub频道名称
- 可选:如果消息加密,补充对应的
Cipher Key
- 点击
SAVE完成配置,之后就能在面板添加widget,选择这个数据源并绑定消息字段展示数据了
方案二:自定义JavaScript数据源对接
如果你的Freeboard版本没有内置PubNub支持,或需要更灵活的消息处理,可采用自定义JS数据源:
- 点击
+ ADD->DATASOURCE,选择JavaScript类型 - 在代码编辑器中输入以下代码(替换成你的PubNub密钥和频道):
(function() { // 初始化PubNub客户端 var pubnub = new PubNub({ subscribeKey: "你的PubNub订阅密钥" }); // 订阅目标频道 pubnub.subscribe({ channels: ["你的频道名称"] }); // 监听消息并同步给Freeboard pubnub.addListener({ message: function(message) { freeboard.updateDatasource(this, message.message); } }); // 页面关闭时取消订阅(可选) return { onClose: function() { pubnub.unsubscribe({ channels: ["你的频道名称"] }); } }; }());
- 若Freeboard未加载PubNub SDK,需先在仪表盘
SETTINGS的External Scripts中添加SDK链接:https://cdn.pubnub.com/sdk/javascript/pubnub.7.2.0.min.js(可替换为最新版本) - 保存数据源后,即可在widget中绑定字段展示数据
常见问题排查
如果配置后收不到数据,优先检查:
- PubNub的订阅密钥、频道名称是否和数据发送端完全一致
- 你的主机能否正常访问PubNub服务器(可通过curl测试:
curl https://ps.pndsn.com/v2/subscribe/你的订阅密钥/你的频道/0/0,查看是否有正常响应) - 自定义JS方案下,浏览器控制台是否有加载报错,确认PubNub SDK已正确引入
内容的提问来源于stack exchange,提问作者Marwan Al-Aqili
相关产品推荐
相关产品推荐

