WebSocket发送与接收数据

创建websocket对象,参数为服务器websockets地址:

ini 复制代码
websocket = new WebSocket("ws:127.0.0.1:7001");

1、发送文本数据

arduino 复制代码
websocket.send('我太笨了,不知道你说的是啥')

2、发送对象数据

发送对象的话需要通过 JSON.parse() 和JSON.Stringify()来转换成字符串发送,接收到之后解析字符串来实现,当然还有其他的方式,只要把对象转成字符串就可以发送:

javascript 复制代码
websocket.onmessage = (event) => {
  let data = JSON.parse(event.data) ;
  console.log(data);
}

websocket.send(
  JSON.Stringify({
    title:'发送对象数据',
    time:+new Date()
  })
)

3、发送与接收原始二进制数据

除了能发送文本信息和普通对象信息之外,还可以发送ArrayBuffer对象和Blob对象;接收ArrayBuffer和Blob对象的时候需要把类型设置成arraybuffer和blob才可以接收,下面看一个示例:

xml 复制代码
<!DOCTYPE html>
<html>
<body>

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>

<script>
let websocket = new WebSocket("ws:127.0.0.1:7001");
let ctx=document.getElementById("myCanvas").getContext("2d");
let imgData=ctx.getImageData(10,10,50,50);
let binary = new UnitArray(imgData.data.length);

 for(let i = 0; i<imgData.data.length;i++){
     binary[i] = imgData.data[i];
  }
 //发送数据
  websocket.send(binary.buffer);
    
  //接收数据
  websocket.binaryType = "arraybuffer";
  websocket.onmessage = (event) => {
      let data = JSON.parse(event.data) ;
      console.log(event.data.byteLength);
    
  }
</script>
</body>
</html>
相关推荐
kyriewen6 分钟前
我花3天抓了一个幽灵bug,凶手藏在第4层
前端·javascript·程序员
IT_陈寒43 分钟前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
wangchunyu1141 小时前
JavaScript 零基础入门教程
前端
hanchenxing1 小时前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
mONESY2 小时前
LangGraph.js 从零上手:把 Agent 工作流从一条线变成一张网
javascript
默_笙2 小时前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
小羊没烦恼!2 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
码上成长3 小时前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架
SGAMERrain3 小时前
做了一个免费的在线绘画网格工具 DrawGrid,聊聊一个小工具是怎么越做越完整的
前端