websocket发送数据

1. 使用JSON格式传输参数

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

客户端发送JSON消息

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

服务器端解析JSON消息

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. 使用查询参数式格式传输

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

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

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

// ... 在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消息

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消息

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();
    
    // 处理逻辑...
}

相关推荐

  1. websocket发送数据

    2024-06-10 09:22:02       8 阅读
  2. WebSocket发送与接收数据

    2024-06-10 09:22:02       13 阅读
  3. vue如何使用websocket去接收数据发送数据

    2024-06-10 09:22:02       15 阅读
  4. 定时音频数据采集并发送websocket实时播放

    2024-06-10 09:22:02       36 阅读
  5. flutter websocket发送ping包?

    2024-06-10 09:22:02       37 阅读
  6. 使用WebSocket在前端发送消息

    2024-06-10 09:22:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 09:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 09:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 09:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 09:22:02       18 阅读

热门阅读

  1. Spring (49)OpenFeign

    2024-06-10 09:22:02       9 阅读
  2. 神经网络----现有网络的下载和使用(vgg16)

    2024-06-10 09:22:02       7 阅读
  3. 1数据库网课笔记

    2024-06-10 09:22:02       8 阅读
  4. 华为策略流控

    2024-06-10 09:22:02       8 阅读
  5. 设计模式-原型模式

    2024-06-10 09:22:02       10 阅读