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

vue和node使用websocket实现数据推送,实时聊天

需求:node做后端根据websocket,连接数据库,数据库的字段改变后,前端不用刷新页面也能更新到数据,前端也可以发送消息给后端,后端接受后把前端消息做处理再推送给前端展示

1.初始化node,生成package.json和package-lock.js

 npm init -y

2.安装express、socket.io、cors

3.创建app.js并编写代码

使用node ./websocket.js运行项目

npm install express socket.io cors -S

建立websocket.js 

const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
const fs = require('fs');
const cors = require('cors');
// 使用 cors 中间件允许跨域请求
// 配置跨域选项
const corsOptions = {origin: '*', // 指定允许的来源methods: ['GET', 'POST'], // 允许的请求方法credentials: true // 允许发送凭据(如 cookies)
};
app.use(cors(corsOptions));
// 创建数据库连接
const mysql = require('mysql');
const connection = mysql.createConnection({host: 'localhost',//数据库连接域名user: 'root',//数据库账号password: '123456',//密码database: 'graduation_design'//要连接的数据库名
});
connection.connect();// 监听客户端连接事件
io.on('connection', (socket) => {console.log('A client connected');//查询表connection.query('SELECT * FROM shelves', (error, results) => {if (error) throw error;//数据推送到前端socket.emit('data', results);},)// 发送数据到客户端setInterval(() => {// 查询数据库并发送数据到客户端connection.query('SELECT * FROM shelves', (error, results) => {if (error) throw error;socket.emit('data', results);},)}, 60 * 1000);//接收到客户端的消息后再推送给客户端socket.on('message', (message) => {console.log('接收到客户端消息:', message);socket.emit("messagedata", message);})// 监听客户端断开连接事件socket.on('disconnect', () => {console.log('A client disconnected');});
});// 启动服务器
http.listen(3000, () => {console.log('WebSocket server is running on port 3333');
});

4.前端使用socket.io-client

npm install socket.io-client

在需要使用websocket连接的页面引入

<template><div class="content-box"><div class="container">{{ data }}<el-button @click="connectWebscoket">连接websocket</el-button><el-button @click="gasong">发送</el-button><el-button @click="stop">停止连接</el-button><hr />{{ msgdata }}</div></div>
</template><script>
import io from 'socket.io-client'
let socket = null
export default {data() {return {data: null,msgdata: ''}},mounted() {},methods: {connectWebscoket() {// 解决跨域问题socket = io('http://localhost:3333', {transports: ['websocket'],withCredentials: true, //白名单extraHeaders: {//请求头'Access-Control-Allow-Origin': 'http://localhost:8080'}})socket.on('data', (data) => {this.data = data})socket.on('messagedata', (msg) => {this.msgdata = msg})},gasong() {socket.send('Hello from client!')},stop() {socket.close()}}
}
</script><style lang="scss" scoped></style>

 此时已经建立好websocket的连接

相关文章:

vue和node使用websocket实现数据推送,实时聊天

需求&#xff1a;node做后端根据websocket&#xff0c;连接数据库&#xff0c;数据库的字段改变后&#xff0c;前端不用刷新页面也能更新到数据&#xff0c;前端也可以发送消息给后端&#xff0c;后端接受后把前端消息做处理再推送给前端展示 1.初始化node&#xff0c;生成pac…...

汽车电子笔记之:基于AUTOSAR的多核监控机制

目录 1、概述 2、系统监控的目标 2.1、任务的状态机 2.2、任务服务函数 2.3、任务周期性事件 2.4、时间监控的指标 2.5、时间监控的原理 2.6、CPU负载率监控原理 2.6.1、设计思路 2.6.2、监控方法的评价 3、基于WDGM模块热舞时序监控方法 3.1、活跃监督 3.2、截至时…...

GDB 源码分析 -- 断点源码解析

文章目录 一、断点简介1.1 硬件断点1.2 软件断点 二、断点源码分析2.1 断点相关结构体2.1.1 struct breakpoint2.1.2 struct bp_location 2.2 断点源码简介2.3 break设置断点2.4 enable break2.5 disable breakpoint2.6 delete breakpoint2.7 info break 命令源码解析 三、Linu…...

SpringMVC概述与简单使用

1.SpringMVC简介 SpringMVC也叫做Spring web mvc,是 Spring 框架的一部分&#xff0c;是在 Spring3.0 后发布的。 2.SpringMVC优点 1.基于 MVC 架构 基于 MVC 架构&#xff0c;功能分工明确。解耦合&#xff0c; 2.容易理解&#xff0c;上手快&#xff1b;使用简单。 就可以…...

传输层—UDP原理详解

目录 前言 1.netstat 2.pidof 3.UDP协议格式 4.UDP的特点 5.面向数据报 6.UDP的缓冲区 7.UDP使用注意事项 8.基于UDP的应用层协议 总结 前言 在之前的文章中为大家介绍了关于网络协议栈第一层就是应用层&#xff0c;包含套接字的使用&#xff0c;在应用层编码实现服务…...

CK-GW06-E03与汇川PLC的EtherNet/IP通信

准备阶段&#xff1a; CK-GWO6-E03网关POE交换机网线汇川PLC编程软件汇川AC801-0221-U0R0型号PLC 1.打开汇川PLC编程软件lnoProShop(V1.6.2)SP2 新建工程&#xff0c;选择对应的PLC型号&#xff0c;编程语言选择为“结构化文本&#xff08;ST&#xff09;语言”&#xff0c;然…...

UI界面自动化BagePage

常用basepage模块代码 # -*- coding: utf-8 -*- # Desc: UI自动化测试的一些基础浏览器操作方法# 第三方库导入 import time from logging import config import randomimport allure from selenium.webdriver.common.alert import Alert from selenium.webdriver.remote.webe…...

北京开发APP的费用明细

开发APP项目时&#xff0c;在功能确定后需要知道有哪些可能的费用&#xff0c;安排项目预算。北京开发APP的费用明细可能会包括以下几个部分&#xff0c;每个部分都会产生一些费用。今天和大家分享APP费用明细有哪些&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&…...

2023年MySQL核心技术第一篇

目录 一 . 存储&#xff1a;一个完整的数据存储过程是怎样的&#xff1f; 1.1 数据存储过程 1.1.1 创建MySQl 数据库 1.1.1.1 为什么我们要先创建一个数据库&#xff0c;而不是直接创建数据表&#xff1f; 1.1.1.2基本操作部分 1.2 选择索引问题 二 . 字段&#xff1a;这么多的…...

通讯协议056——全网独有的OPC HDA知识一之接口(十一)IOPCHDA_Playback

本文简单介绍OPC HDA规范的IOPCHDA_Playback&#xff08;可选&#xff09;接口方法&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 此接口支持历史服务器的播放功能。这提供了从历史服务器获得初始数据集的能力&#xff0c;然后获得历史数据的持续更新。这与异…...

数学建模:数据的预处理

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 文章目录 数据预处理数据变换数据清洗缺失值处理异常值处理 数据预处理 数据变换 常见的数据变换的方式&#xff1a;通过某些简单的函数进行数据变换。 x ′ x 2 x ′ x x ′ log ⁡ ( x ) ∇ f ( x k )…...

Linux土遁术之监测监测进程打开文件

分析问题过程中&#xff0c;追踪进程打开的文件可以在许多不同情况下有用&#xff0c;体现在以下几个方面&#xff1a; 故障排除和调试&#xff1a; 当程序出现问题、崩溃或异常行为时&#xff0c;追踪进程打开的文件可以帮助您找出问题的根本原因。这有助于快速定位错误&…...

css让多个盒子强制自动等宽

1.width: calc( 100 / n% ) 2.display:flex; flex:1;width:100px; 3.display:grid;grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); 但是其中某一个内容较长的时候 会破坏1:1:1的平衡 这个时候发现附件名字过长导致不等比例&#xff0c;通过查看阮一峰flex文…...

【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)

zhi.oscs1024.com​​​​​ 漏洞类型反序列化发现时间2023-08-29漏洞等级高危MPS编号MPS-qkdx-17bcCVE编号CVE-2023-40195漏洞影响广度广 漏洞危害 OSCS 描述Apache Airflow Spark Provider是Apache Airflow项目的一个插件&#xff0c;用于在Airflow中管理和调度Apache Spar…...

树模型与集成学习:LightGBM

目录 树模型与集成学习 LightGBM 的贡献 LightGBM 的贡献&#xff1a;单边梯度抽样算法 LightGBM 的贡献&#xff1a;直方图算法 LightGBM 的贡献&#xff1a;互斥特征捆绑算法 LightGBM 的贡献&#xff1a;深度限制的 Leaf-wise 算法 树模型与集成学习 树模型是非常好的…...

PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例

拼多多商品详情原数据API接口的作用是获取拼多多电商平台上某一商品的详细信息&#xff0c;包括商品的标题、价格、库存、图片、描述、包邮信息、销量、评价、优惠券等数据。通过该API接口可以获取到商品的原始数据&#xff0c;用于分析、筛选和展示商品信息。 pinduoduo.item…...

数据结构(Java实现)-二叉树(下)

获取二叉树的高度 检测值为value的元素是否存在(前序遍历) 层序遍历 判断一棵树是不是完全二叉树 获取节点的路径 二叉树的最近公共祖先...

如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?

作者&#xff1a;深耕行业的 SmartX 金融团队 张瑞松 运维人员在日常管理集群时&#xff0c;有时难免会产生这样的困惑&#xff1a; 新业务准备上线&#xff0c;在具备多套存储的情况下&#xff0c;应如何选择承载业务的存储环境&#xff1f; 业务虚拟机刚上线时运行速度很快…...

固定资产管理措施怎么写

固定资产管理措施是指企业在进行固定资产管理时所采取的各种措施和方法。以下是一些常见的固定资产管理措施&#xff1a;  建立完善的固定资产管理制度。制定明确的资产采购、使用、维护、报废等流程和标准&#xff0c;确保资产管理的规范性和透明度。  采用先进的资产管理…...

C语言中typedef和const的区别

昨天面试的时候面试官问了这个问题&#xff0c;平时也有见过这两个类型限定词&#xff0c;可能是因为不怎么使用的原因&#xff0c;当问到它们的区别时&#xff0c;我不知道从哪个方面开始回答。 用 typedef 定义新的类型名 类型定义的书写格式为 typedef 类型 被定义的类型名 …...

Windows 10/11下,手把手教你用Python2和Git搞定GitHack(附常见错误解决)

Windows 10/11下Python2与Git环境搭建及GitHack实战指南 在网络安全和CTF竞赛领域&#xff0c;.git文件夹泄露是一个常见但危险的漏洞。GitHack作为一款专门针对此类漏洞的利用工具&#xff0c;能够帮助安全研究人员快速还原网站源代码。本文将详细介绍在Windows 10/11系统上配…...

《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》060、未来趋势与芯片设计者的思考

OpenClaw系列总结:未来趋势与芯片设计者的思考 昨晚调试一块RISC-V核的cache一致性,波形里看到一条store指令被莫名其妙地重复执行了两次。我盯着GTKWave看了半小时,最后发现是写缓冲的valid信号在复位释放后没有清零——一个典型的“芯片级”bug,在嵌入式裸机里永远不会遇…...

FPGA超声波测距项目优化:从50MHz到17kHz时钟分频,聊聊资源与精度的权衡

FPGA超声波测距的时钟优化艺术&#xff1a;从50MHz到17kHz的工程哲学 在资源受限的嵌入式系统中&#xff0c;每一个逻辑单元和存储位都显得弥足珍贵。当我们在Cyclone IV这类中低端FPGA上实现超声波测距功能时&#xff0c;时钟管理策略往往成为决定项目成败的关键因素之一。本文…...

寒战1994电影完整版免费看,网盘在线观看完整版

寒战1994电影完整版免费看&#xff0c;转存到自己网盘后&#xff0c;可以网盘在线观看完整版链接:https://pan.baidu.com/s/1U7-U0Csp2BCc9NYXEHuQZw ​ 提取码:8888操作方法&#xff1a;复制链接&#xff0c;打开百度网盘&#xff0c;便会自动跳转&#xff0c;转存到自己网盘就…...

【笔记】旧AI,新人类

AI擅长"旧"&#xff0c;人类擅长"新" 关于人机分工的一点思考 不久前&#xff0c;一场颇具戏剧性的"人机对决"在餐饮界引起了不小的波澜。"美膳狮"智能炒菜机器人与湘菜厨师杨孙同台竞技&#xff0c;共同炒制三道菜&#xff1a;XO酱笋…...

工业质检落地新思路:拆解SimpleNet如何用‘特征空间加噪’搞定缺陷检测

工业质检革命&#xff1a;SimpleNet如何用特征空间扰动突破小样本缺陷检测瓶颈 在PCB板生产线上&#xff0c;一个肉眼几乎不可见的焊点虚接可能导致整批产品报废&#xff1b;在汽车零部件装配车间&#xff0c;细微的划痕可能引发后续使用中的安全隐患。传统工业质检依赖人工目检…...

JoyCon-Driver:Windows平台上的Switch手柄完美解决方案

JoyCon-Driver&#xff1a;Windows平台上的Switch手柄完美解决方案 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 还在为Nintendo Switch JoyCon控制器…...

从一次线上故障复盘:如何用 nlohmann::json 的 `value()` 和 `get_to()` 优雅处理缺失字段

从一次线上故障复盘&#xff1a;如何用 nlohmann::json 的 value() 和 get_to() 优雅处理缺失字段 上周五晚上10点&#xff0c;我们的算法服务平台突然收到大量错误告警。一个核心接口在解析上传的算法包时频繁报错&#xff0c;日志里满是[json.exception.type_error.302] type…...

BiliBiliToolPro:解放双手的B站自动化神器,让你的账号管理从未如此轻松

BiliBiliToolPro&#xff1a;解放双手的B站自动化神器&#xff0c;让你的账号管理从未如此轻松 【免费下载链接】BiliBiliToolPro B 站&#xff08;bilibili&#xff09;自动任务工具&#xff0c;支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。 项目地址:…...

Netduino Plus 2硬实时驱动WS2812:托管环境下的纳秒级GPIO控制实战

1. 项目概述&#xff1a;当托管环境遇上纳秒级时序如果你玩过嵌入式开发&#xff0c;尤其是用Arduino驱动过WS2812&#xff08;也就是Adafruit的NeoPixels&#xff09;&#xff0c;那你肯定知道那套经典的Adafruit_NeoPixel库&#xff0c;几行代码就能让灯带流光溢彩。但当你把…...