当前位置:   article > 正文

前后端实时数据通信

前后端实时数据通信

实现前后端实时数据转换通常涉及到以下几个步骤:

  1. 后端提供数据转换接口。

  2. 前端实时数据获取。

  3. 前端实时数据转换。

  4. 前端实时展示转换后数据。

以下是一个简单的例子,假设后端提供了一个接口来转换某种数据格式,前端使用JavaScript和WebSocket实现实时数据转换。

后端接口(Python示例使用Flask):

  1. from flask import Flask, request, jsonify
  2. app = Flask(__name__)
  3. @app.route('/convert_data', methods=['POST'])
  4. def convert_data():
  5. # 获取数据并转换
  6. data = request.json['data']
  7. # 假设这里有数据转换逻辑
  8. converted_data = perform_data_conversion(data)
  9. return jsonify({'converted_data': converted_data})
  10. def perform_data_conversion(data):
  11. # 转换逻辑
  12. return data # 假设是转换数据,实际应用中会有更复杂的逻辑
  13. if __name__ == '__main__':
  14. app.run(debug=True)

前端实现(JavaScript使用WebSocket):

  1. // 假设WebSocket服务地址为 'ws://localhost:5000/convert_data'
  2. const socket = new WebSocket('ws://localhost:5000/convert_data');
  3. // 收到服务器发送的消息时触发
  4. socket.onmessage = function(event) {
  5. const response = JSON.parse(event.data);
  6. // 处理转换后的数据
  7. console.log(response.converted_data);
  8. };
  9. // 发送需要转换的数据
  10. socket.onopen = function() {
  11. socket.send(JSON.stringify({ data: "Some data to convert" }));
  12. };

简单前端使用WebSocket与后端建立实时通信,发送需要转换的数据,并接收转换后的数据。实际应用中,你可能需要处理连接断开和重连的逻辑,以及错误处理等。

1具体实现添加依赖到你的pom.xml

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-websocket</artifactId>
  4. </dependency>

2配置WebSocket:

  1. import org.springframework.context.annotation.Configuration;
  2. import org.springframework.messaging.simp.config.MessageBrokerRegistry;
  3. import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
  4. import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
  5. import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
  6. @Configuration
  7. @EnableWebSocketMessageBroker
  8. public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
  9. @Override
  10. public void registerStompEndpoints(StompEndpointRegistry registry) {
  11. registry.addEndpoint("/ws").withSockJS();
  12. }
  13. @Override
  14. public void configureMessageBroker(MessageBrokerRegistry registry) {
  15. registry.enableSimpleBroker("/topic");
  16. registry.setApplicationDestinationPrefixes("/app");
  17. }
  18. }

3创建WebSocket控制器:

  1. import org.springframework.messaging.handler.annotation.MessageMapping;
  2. import org.springframework.messaging.handler.annotation.SendTo;
  3. import org.springframework.stereotype.Controller;
  4. @Controller
  5. public class WebSocketController {
  6. @MessageMapping("/convertData")
  7. @SendTo("/topic/convertedData")
  8. public String convertData(String data) {
  9. // 这里实现数据转换逻辑
  10. String convertedData = convertDataLogic(data);
  11. return convertedData;
  12. }
  13. private String convertDataLogic(String data) {
  14. // 转换逻辑
  15. return "Converted " + data;
  16. }
  17. }

4前端使用WebSocket:

  1. const socket = new WebSocket('ws://' + window.location.host + '/ws');
  2. socket.onopen = function(event) {
  3. console.log('WebSocket connected');
  4. };
  5. socket.onmessage = function(event) {
  6. console.log('Received message: ' + event.data);
  7. };
  8. function sendData() {
  9. const data = document.getElementById('data-to-send').value;
  10. socket.send(JSON.stringify({
  11. destination: '/app/convertData',
  12. content: data
  13. }));
  14. }

5确保前端订阅了转换后数据的topic

  1. socket.send(JSON.stringify({
  2. destination: '/user/queue/convertedData',
  3. disconnectDelay: 5000
  4. }));

前端发送一个消息到/app/convertData,后端的WebSocketController接收这个消息,执行数据转换逻辑,并通过@SendTo注解发送转换后的数据到/topic/convertedData。前端订阅了这个topic,以便接收实时转换后的数据。

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

闽ICP备14008679号