用Browserify打包nodejs的Buffer类

网关升级项目介绍

需要向嵌入式拷入新的程序,我们采用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实例
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 8,977评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 9,521评论 2 58
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 11,509评论 0 6
  • 前言 js是从网页小脚本演变过来的,至今,前端的js库,也不像一个真正的模块。前端js经历了工具类库、组件库、前端...
    白昔月阅读 8,532评论 2 11
  • 让一个矩形在3D上进行X轴旋转,由于3D透视的关系,看上去就会变成一个梯形,所以可以利用之前平行四边形的解决方案来...
    Elevens_regret阅读 4,633评论 0 1