当前位置:   article > 正文

关于后端buffer数据和传给前端blob数据的处理_nodejs把buffer数据发送给前端

nodejs把buffer数据发送给前端

Node.js Buffer(缓冲区)

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。

关于后端buffer数据和传给前端blob数据的处理

这个例子是本人在使用websocket时产生的问题,使用JavaScript,node.js

1 在后端转换为JSON字符串

toString 方法能把Buffer其转为我们能认识的字符

  function handleMessage (msg) {
    console.log(msg)// 这里是buffer数据例如<Buffer 7b 22 69 64 22 3a 31 36 37 30 32 30 39 35 37 30 33 34 33 2c 22 75 73 65 72 22 3a 22 4a 61 79 62 69 72 64 22 2c 22 64 61 74 65 54 69 6d 65 22 3a 31 36 ... 30 more bytes>
    msg = msg.toString()// 在此之后就会变成字符串类型
    console.log(msg)// {"id":1670209570343,"user":"Jaybird","dateTime":1670209570343,"msg":"去去去"}
    server.clients.forEach((c) => {// 等转换为字符串类型之后再传回前端
      c.send(msg);
    })
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
JSON.parse(e.data);// 前端只需要把后端传过来在data中的JSON字符串转变为js对象就可以了
  • 1

2 在前端将blob转换为对象

  function handleMessage (msg) {
    server.clients.forEach((c) => {
      c.send(msg);// 后端直接返回就好
    })
  }
  • 1
  • 2
  • 3
  • 4
  • 5
    async handleWsMessage (e) {
      // console.log(e.data);// Blob {size: 74, type: ''},通过下面的函数转换为对象
      var msg;
      await blobToObj(e.data);
      console.log(msg)
      function blobToObj(data) {
        return new Promise((resolve, reject) => {
          let reader = new FileReader();
          reader.readAsText(data, 'utf-8');
          reader.onload = function() {
            try {
              msg = JSON.parse(reader.result);
              resolve(msg)
            } catch (error) {
              resolve({
                code: 200,
                message: '获取文件信息失败'
              })
            }
          }
        });
      }
    }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3 调用text()方法

e.data.text(res => console.log(res));
  • 1

这个res的值就是一个对象,可以:

var msg;
e.data.text(res => msg = res);
console.log(msg)
  • 1
  • 2
  • 3

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/145164
推荐阅读
相关标签
  

闽ICP备14008679号