当前位置: 首页 > 知识库问答 >
问题:

Paho javascript mqtt压缩有效负载

丌官淇
2023-03-14

我正在开发一个网站,可以连接到一个mqtt代理,并获得有效负载消息。

我使用的库是(https://eclipse.org/paho/clients/js/)。

我的问题是以下几点。当我试图获得一个标准压缩消息(gzipped)时,库抛出一个异常“错误:AMQJS0009E Malformed UTF Data:F53-52”。

如何处理压缩消息?

下面是我的代码:

var selected_tags   = '';
var checked_tags    = [];

var hostname        = 'xxx';
var port            = 80;
var qos             = 1;

var user            = 'xxx';
var pass            = 'xxx';

var keepAlive       = 60;
var timeout         = 3;
var ssl             = false;
var cleanSession    = true;
var lastWillTopic   = '';
var lastWillQos     = 1;
var lastWillRetain  = false;
var lastWillMessage = '';
var g_topic;
var client = new Messaging.Client(hostname, port, "myclientid_" + parseInt(Math.random() * 100, 10));

var options = {
    timeout             : 3,
    userName            : user,
    password            : pass,
    keepAliveInterval   : keepAlive,
    cleanSession        : cleanSession,
    useSSL              : ssl,
    onSuccess           : function () {
        console_log('<span style="color:green">Connected</span>');
    },
    onFailure           : function (message) {
        console_log('<span style="color:red">Connection failed: ' + message.errorMessage + '</span>');
        client.connect(options);
    }
};
function _subscribe(){
    g_topic = $("#sel_reader").val();
    console_log('<span style="color:green">subscribe to: ' + g_topic + '</span>');
    client.subscribe(g_topic, {qos: qos});
    $("#_subscribe").addClass('hide');
    $("#_unsubscribe").removeClass('hide');
}
function _unsubscribe(){
    console_log('<span style="color:red">unsubscribe from: ' + g_topic + '</span>');
    client.unsubscribe(g_topic);
    $("#_subscribe").removeClass('hide');
    $("#_unsubscribe").addClass('hide');
}
client.onConnectionLost = function (responseObject) {
    console_log('<span style="color:red">Connection lost: ' + responseObject.errorMessage + '</span>');
    client.connect(options);
};
client.onMessageArrived = function (message) {
    // console.log("message arrived");

    var live_search = [];
    var live_found  = '';
    var json = JSON.parse(message.payloadString);

    console_log('<hr />Message Recieved: Topic: ' + message.destinationName + '<br />' 
                  +message.payloadString + 
                '. QoS: ' + message.qos
    );

};
var publish = function (payload, topic, qos) {
    var message = new Messaging.Message(payload);
    message.destinationName = topic;
    message.qos = qos;
    client.send(message);
}
function console_log(txt){
    $("#console").append('<b>'+txt + "</b><br />");
}
var prev_imei = '';
var find = ':';
var re   = new RegExp(find, 'g');
function SortByRssi(a, b){
    var arssi = a.rssi;
    var brssi = b.rssi; 
    return ((arssi > brssi) ? -1 : ((arssi < brssi) ? 1 : 0));
}
$(document).ready(function(){
    client.connect(options);
});

共有1个答案

秦才英
2023-03-14

如果有人需要Python的答案:

import zlib

def _on_message(self, mqttc, obj, msg):
    dec_msg = zlib.decompress(msg.payload)
    # do whatever you need with dec_msg
    print dec_msg
 类似资料:
  • Gzip 我尝试切换到二进制操作码,认为可能压缩文本=binary,但这不起作用。我真的看不出我做错了什么或者错过了什么。此实现不包括跨越消息的滑动压缩窗口。我想响应头说明了这一点。帮助感激地接受了。

  • 我得到无效的zip,当写入文件以下代码: 我将其写入文件的方式是: 我做错了什么?

  • tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使

  • Tango拥有一个默认的压缩中间件,可以按照扩展名来进行文件的压缩。同时,你也可以要求某个Action自动或强制使用某种压缩。比如: type CompressExample struct { tango.Compress // 添加这个匿名结构体,要求这个结构体的方法进行自动检测压缩 } func (CompressExample) Get() string { return f

  • 所有基于http协议的服务器组件均支持压缩,请求头Accept-Encoding的值需要包含deflate或者gzip。 即便请求头Accept-Encoding的值包含deflate或者gzip,服务器还会参考静态变量http_server::zip_min_size(默认1024,即1KB)和http_server::zip_max_size(默认307200,即300KB)来决定是否压缩:仅

  • 问题内容: 我知道这是一项容易的任务,但是更改代码后它停止工作,并且无法恢复!我实际上使用了两个函数来进行压缩和解压缩,尽管实际上它是“ jar”和“ unjar”,但这并没有太大的区别 任何帮助/建议吗? 创建JarFile时发生错误: 问题答案: 我不知道这是否是您的问题,但是通常最好在完成写入后关闭每个zip条目。 请参阅。 在显示的代码中,不会关闭邮政编码中的最后一个条目。您也不会显示关闭