当前位置: 首页 > news >正文

前后端实时数据通信

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

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

  2. 前端实时数据获取。

  3. 前端实时数据转换。

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

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

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

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

前端实现(JavaScript使用WebSocket):

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

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

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

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

2配置WebSocket:

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/ws").withSockJS();}@Overridepublic void configureMessageBroker(MessageBrokerRegistry registry) {registry.enableSimpleBroker("/topic");registry.setApplicationDestinationPrefixes("/app");}
}

3创建WebSocket控制器:

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;@Controller
public class WebSocketController {@MessageMapping("/convertData")@SendTo("/topic/convertedData")public String convertData(String data) {// 这里实现数据转换逻辑String convertedData = convertDataLogic(data);return convertedData;}private String convertDataLogic(String data) {// 转换逻辑return "Converted " + data;}
}

4前端使用WebSocket:

const socket = new WebSocket('ws://' + window.location.host + '/ws');
socket.onopen = function(event) {console.log('WebSocket connected');
};socket.onmessage = function(event) {console.log('Received message: ' + event.data);
};function sendData() {const data = document.getElementById('data-to-send').value;socket.send(JSON.stringify({destination: '/app/convertData',content: data}));
}

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

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

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

相关文章:

  • ESP32
  • python爬虫----python列表高级
  • 【踩坑】使用CenterNet训练自己的数据时的环境配置与踩坑
  • 项目四-图书管理系统
  • AcWing 173.矩阵距离
  • Excel·VBA数组平均分组问题
  • Kubernetes 知识体系 系列一
  • Python最强自动化神器!
  • MySQL 日志:undo log、redo log、binlog 有什么用?
  • iPhone的iOS系统:定义移动智能体验,引领科技潮流之巅
  • iOS - Runtime-API
  • 【爬虫基础】第3讲 常见浏览器User-Agent大全
  • C++从入门到精通——命名空间
  • 记录 AI绘图 Stable Diffusion的本地安装使用,可搭建画图服务端
  • 41-Vue-webpack基础
  • [数据结构]链表的实现在PHP中
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Angular4 模板式表单用法以及验证
  • exif信息对照
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • uni-app项目数字滚动
  • 高度不固定时垂直居中
  • 如何优雅地使用 Sublime Text
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (175)FPGA门控时钟技术
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Java)【深基9.例1】选举学生会
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)用.Net的File控件上传文件的解决方案
  • .aanva
  • .net Application的目录
  • .NET Core WebAPI中封装Swagger配置
  • .net framework profiles /.net framework 配置
  • .net 设置默认首页
  • .Net 应用中使用dot trace进行性能诊断
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET中GET与SET的用法
  • .so文件(linux系统)
  • .考试倒计时43天!来提分啦!
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Autowired和@Resource的区别
  • @vue/cli 3.x+引入jQuery
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Android]创建TabBar
  • [AR]Vumark(下一代条形码)
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [C++]二叉搜索树