美文网首页
用Browserify打包nodejs的Buffer类

用Browserify打包nodejs的Buffer类

作者: SodaSea | 来源:发表于2017-06-28 09:47 被阅读0次

    网关升级项目介绍

    需要向嵌入式拷入新的程序,我们采用mqtt协议,写一个前端程序完成发送二进制代码的过程。
    参考的代码是:http://www.jianshu.com/p/1f8467093d7f

    遇到的问题

    mqtt.js已经被打包成browser能使用的js包,因为参考给的mqttjs版本太老了,我们换了新的
    下载地址:https://gist.github.com/analog-io/efb25a9b00b1d1b38c12
    mqtt的client.publish的参数只支持String类和Buffer类。String类的数据测试成功,但是实际中为了节省空间我们发送的是二进制字节流,所以我们必须要用Buffer。
    因为Buffer是node包的类型,我们尝试用js的bufferArray和Unit8Array,但是报错了。PS: 虽然有看到最新browsermqtt支持Unit8Array,也没有报错,但是服务器并没有收到数据。

    解决办法——Browserify对nodejs的module做打包

    方法一:https://www.npmjs.com/package/buffer
    但是失败了,直接在js里使用Buffer类失败,原因可能是Buffer类被错误打包了(因为node本身就有buffer的module,可能有很多依赖,我们需要的是独立的)
    方法二:
    $ browserify -r buffer ./test.js > b2.js
    test.js是原来的nodejs文件

    var Buffer = require('buffer/').Buffer;
    console.log('Got it');
    module.exports = function(){
        return buf = new Buffer(1);
    };
    

    生成可以为bs.js使用的js文件

    前端代码引用
    <script src="./b2.js"></script>

      var buf = require('buffer'); //nodejs写法,生成buf对象
      var buf_instance = new buf.Buffer(2);//新建buf实例
    

    相关文章

      网友评论

          本文标题:用Browserify打包nodejs的Buffer类

          本文链接:https://www.haomeiwen.com/subject/ngnscxtx.html