websocket发送数据

server/2024/9/25 10:34:01/

1. 使用JSON格式传输参数

可以使用库如Jackson或Gson来处理JSON。

客户端发送JSON消息

javascript">var socket = new WebSocket("ws://localhost:8080/ws");
socket.onopen = function() {var message = {"action": "greet","name": "Alice"};socket.send(JSON.stringify(message));
};

服务器端解析JSON消息

java">import com.fasterxml.jackson.databind.ObjectMapper; // Jackson库// ... 在WebSocket的handler中@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {ObjectMapper mapper = new ObjectMapper();JsonNode jsonNode = mapper.readTree(message.getPayload());String action = jsonNode.get("action").asText();String name = jsonNode.get("name").asText();// 根据解析的参数执行相应操作if ("greet".equals(action)) {String response = "Hello, " + name + "!";session.sendMessage(new TextMessage(response));}
}

2. 使用查询参数式格式传输

客户端发送查询参数式消息

javascript">var socket = new WebSocket("ws://localhost:8080/ws");
socket.onopen = function() {socket.send("action=greet&name=Alice");
};

服务器端解析查询参数式消息

java">// ... 在WebSocket的handler中@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {String[] params = message.getPayload().split("&");Map<String, String> paramMap = new HashMap<>();for (String param : params) {String[] keyValue = param.split("=");paramMap.put(keyValue[0], keyValue[1]);}String action = paramMap.get("action");String name = paramMap.get("name");// 处理逻辑...
}

3. 使用XML格式传输参数

虽然XML相对于JSON更为冗长,但在某些情况下,它可能更为适合,特别是当消息结构复杂或需要与遗留系统集成时。

客户端发送XML消息

javascript">var socket = new WebSocket("ws://localhost:8080/ws");
socket.onopen = function() {var xmlString = '<message><action>greet</action><name>Alice</name></message>';socket.send(xmlString);
};

服务器端解析XML消息

java">import javax.xml.parsers.DocumentBuilder; // Java内置的XML解析器
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;// ... 在WebSocket的handler中@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document doc = builder.parse(new InputSource(new StringReader(message.getPayload())));String action = doc.getElementsByTagName("action").item(0).getTextContent();String name = doc.getElementsByTagName("name").item(0).getTextContent();// 处理逻辑...
}

http://www.ppmy.cn/server/48554.html

相关文章

【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt窗口 | 标准对话框 | 输入对话框QInputDialog 文章编号&#xff1a;…

最短路:spfa算法

最短路&#xff1a;spfa算法 题目描述参考代码![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3be484da34a84911a0a7dab3f1d84945.png) 题目描述 参考代码 输入示例 3 3 1 2 5 2 3 -3 1 3 4输出示例 2#include <iostream> #include <cstring> #inc…

私有云数据库特征

私有云数据库具有以下几个主要特征&#xff1a; 控制和安全&#xff1a; 数据控制&#xff1a;组织对数据有完全的控制权&#xff0c;可以根据需要设置访问权限和安全策略。安全性&#xff1a;私有云数据库通常部署在组织内部的数据中心&#xff0c;利用内部网络&#xff0c…

Polar Web【中等】写shell

Polar Web【中等】写shell Contents Polar Web【中等】写shell思路&探索EXP运行&总结 思路&探索 初看题目&#xff0c;预测需要对站点写入木马&#xff0c;具体操作需要在过程中逐步实现。 打开站点(见下图)&#xff0c;出现 file_put_contents 函数&#xff0c;其…

OS复习笔记ch7-2

页式管理 学过计组的同学都了解一点页式管理&#xff0c;就是将内存划分成较小的、大小固定的、等大的块。现在OS引入了进程的概念&#xff0c;那么为了匹配内存的分块&#xff0c;同样把进程也划分成同样大小的块。 这里区分两个概念 The chunks of a process are called p…

第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 试题F:括号与字母 【问题描述】 给定一个仅包含小写字母和括号的字符串 S …

Qt6 播放音视频

一、概述 QT6相较于Qt5引入了许多新特性和改进&#xff0c;包括对音视频开发的增强支持。 QT6中的音视频支持 QT6提供了一套完整的音视频处理功能&#xff0c;这些功能被整合在QtAV项目中。QtAV是一个基于Qt的音视频处理框架&#xff0c;用于处理音视频播放、录制、编解码、处…

263.丑数

丑数 就是只包含质因数 2、3 和 5 的正整数。 给你一个整数 n &#xff0c;请你判断 n 是否为 丑数 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;n 6 输出&#xff1a;true 解释&#xff1a;6 2 3 示例 …