首页 > 其他分享 >demo-socket

demo-socket

时间:2024-06-13 21:22:11浏览次数:10  
标签:WebSocket socket demo ArrayBuffer Uint8Array ws const data

在通过 WebSocket 或者 TCP Socket 进行通信时,如果服务器端期望接收 ArrayBuffer 类型的数据,那么客户端也需要相应地发送二进制数据。然而,对于字符串 "DDT1" 这样的文本数据,你需要先将其转换为二进制格式(如 Uint8ArrayArrayBuffer),然后再发送。

以下是一个使用 JavaScript WebSocket 客户端发送字符串作为 ArrayBuffer 并接收服务器端响应的基本示例:

客户端代码(JavaScript WebSocket)

// 假设已经建立了 WebSocket 连接,并且 ws 是你的 WebSocket 对象
const message = "DDT1";
const encoder = new TextEncoder(); // 用于将字符串转换为 Uint8Array

// 将字符串转换为 Uint8Array
const uint8Array = encoder.encode(message);

// 如果需要 ArrayBuffer,可以从 Uint8Array 转换
const arrayBuffer = uint8Array.buffer;

// 发送 ArrayBuffer
ws.send(arrayBuffer);

// 接收服务器的响应
ws.onmessage = function(event) {
    // 注意:这里 event.data 可能是 ArrayBuffer、Blob、String 或其他类型,取决于服务器发送了什么
    if (event.data instanceof ArrayBuffer) {
        // 转换为 Uint8Array 进行处理
        const uint8ArrayResponse = new Uint8Array(event.data);
        // 如果服务器发送的是文本,你可能想要将其转换回字符串
        const decoder = new TextDecoder('utf-8');
        const responseString = decoder.decode(uint8ArrayResponse);
        console.log('Received:', responseString); // 应该打印 "ok"
    } else if (typeof event.data === 'string') {
        // 如果服务器直接发送字符串,则直接处理
        console.log('Received:', event.data);
    }
};

服务器端代码(Node.js 示例)

在服务器端(假设使用 Node.js),你可能会使用 ws(WebSocket)或 net(TCP)模块。以下是使用 ws 模块的一个简单示例,展示如何处理接收到的 ArrayBuffer 并发送回字符串 "ok":

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
    ws.on('message', function incoming(data) {
        // 检查接收到的数据是否是 ArrayBuffer
        if (data instanceof ArrayBuffer) {
            // 转换为 Uint8Array 或其他你需要的格式
            const uint8Array = new Uint8Array(data);
            // 在这里你可以处理 uint8Array 中的数据

            // 假设你要发送回 "ok"
            const encoder = new TextEncoder();
            const okBuffer = encoder.encode('ok');
            ws.send(okBuffer); // 发送 ArrayBuffer
        }
    });
});

请注意,上述示例假设你正在使用 WebSocket 通信,并且服务器和客户端都正确配置了 WebSocket 连接。如果你使用的是 TCP Socket,那么你需要使用不同的库(如 Node.js 的 net 模块)并相应地处理数据。

此外,还需要确保服务器和客户端都正确地处理了编码和解码过程,以确保数据在发送和接收时保持一致。

标签:WebSocket,socket,demo,ArrayBuffer,Uint8Array,ws,const,data
From: https://www.cnblogs.com/NeonIs99/p/18246782

相关文章

  • Socket初体验
    电脑windows连接Socket的服务端:telnetlocalhost1024 服务端publicclassSocketServer{publicstaticvoidmain(String[]args){ServerSocketserverSocket=null;Map<String,Socket>CLENT_MAP=newHashMap<>();//用于存储连接进来的客户......
  • boost-Asio 基础学习2 --socket 服务端和客户端简单通讯
    已经写了两期文章了!这是第三期现在也到使用asio库实现一些基础的小功能了......
  • springboot集成socketio
    1.引入依赖<dependency><groupId>com.corundumstudio.socketio</groupId><artifactId>netty-socketio</artifactId><version>2.0.3</version></dependency>2.基本配置server:port:8081socketio:host:localho......
  • Unix socket lock file is empty /var/run/mysqld/mysqld.sock.lock
    介绍当使用MySQL数据库时,有时候会遇到一个错误信息,提示“Unixsocketlockfileisempty:/var/run/mysqld/mysqld.sock.lock.”这个错误一般是由于MySQL服务器无法启动造成的。在本文中,我们将探讨这个错误的原因和解决方案。错误原因/var/run/mysqld/mysqld.sock.lock......
  • 基于.Net 框架实现WebSocket 简单通信——服务端
    新建项目创建一个.Net框架的控制台程序。添加包 项目→管理NuGet程序包打开包管理窗口,添加SuperWebSocket程序包。实现项目→添加类打开添加新项窗口,添加一个C#类。启动监听 WebSocketServersocket=newWebSocketServer();Console.WriteLine("IP:"+ip......
  • WebSocket
    WebSocket介绍WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。HTTP协议和WebSocket协议对比:HTTP是短连接WebSocket是长连接HTTP通信是单向的,基于请......
  • python 圖片拼接demo
    fromPILimportImagedefcomb(png1,png2,png3,png4,png5,style='horizontal'):img1,img2,img3,img4,img5=Image.open(png1),Image.open(png2),Image.open(png3),Image.open(png4),Image.open(png5)#统一图片尺寸,可以自定义设置(宽,高)img1=img1.r......
  • 1_websocket工具封装
    Websocket1构造函数newWebSocket(url[,protocols])参数url:要连接到的URLprotocols:单个协议字符串或协议字符串数组2实例属性binaryType:接收的二进制数据的类型blobarraybufferreadyState:websocket连接的当前状态readyState值mean解释......
  • Socket编程权威指南(四)彻底解密 Epoll 原理
    在上一篇文章中,我们优化了基于Socket的网络服务器,从最初的select/poll模型进化到了高效的epoll。很多读者对epoll的惊人性能表示极大的兴趣,对它的工作原理也充满了好奇。今天,就让我们一起揭开epoll神秘的面纱,深入剖析其内部运作机制,进一步提升你的Linux网络编程......
  • TouchSocke 中使用WebSocket的快捷事务命令行
    1、效果2、开发环境:    2.1、NetFramework4.5    21.2、NuGet中安装TouchSocket2.0.0、TouchSocket.Core2.0.0、TouchSocket.Http2.0.0如下图。3、代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Tex......