使用 websocket 实现实时消息推送是一种高效的方式,可以在客户端和服务器之间建立长连接,实现低延迟的双向通信。以下是一个简单的示例,展示如何在前端使用 vue 3 和后端使用 node.js 搭建一个 websocket 实现实时消息推送的应用。
前端(vue 3)
1. 创建 vue 项目
首先,创建一个新的 vue 3 项目。如果你还没有安装 vue cli,可以通过以下命令安装:
npm install -g @vue/cli
创建一个新的 vue 项目:
vue create websocket-demo cd websocket-demo
2. 安装 websocket 客户端库
在 vue 项目中,可以使用原生 websocket api,也可以使用第三方库。这里我们使用原生 websocket api。
3. 实现 websocket 客户端
在 src 目录下的 app.vue 文件中,添加以下代码:
<template> <div id="app"> <h1>websocket demo</h1> <input v-model="message" @keyup.enter="sendmessage" placeholder="type a message" /> <button @click="sendmessage">send</button> <ul> <li v-for="(msg, index) in messages" :key="index">{{ msg }}</li> </ul> </div> </template> <script> export default { data() { return { ws: null, message: '', messages: [] }; }, mounted() { this.connectwebsocket(); }, methods: { connectwebsocket() { this.ws = new websocket('ws://localhost:3000'); this.ws.onmessage = (event) => { this.messages.push(event.data); }; this.ws.onopen = () => { console.log('connected to websocket server'); }; this.ws.onclose = () => { console.log('disconnected from websocket server'); }; }, sendmessage() { if (this.message !== '') { this.ws.send(this.message); this.message = ''; } } } }; </script> <style> #app { font-family: avenir, helvetica, arial, sans-serif; text-align: center; margin-top: 60px; } </style>
后端(node.js)
1. 创建 node.js 项目
创建一个新的目录并初始化一个 node.js 项目:
mkdir websocket-server cd websocket-server npm init -y
2. 安装 websocket 库
安装 ws
库,这是一个简单且强大的 websocket 库:
npm install ws
3. 实现 websocket 服务器
在项目根目录下创建一个 server.js
文件,添加以下代码:
const websocket = require('ws'); const wss = new websocket.server({ port: 3000 }); wss.on('connection', (ws) => { console.log('client connected'); ws.on('message', (message) => { console.log(`received message: ${message}`); // broadcast the message to all clients wss.clients.foreach((client) => { if (client.readystate === websocket.open) { client.send(message); } }); }); ws.on('close', () => { console.log('client disconnected'); }); }); console.log('websocket server is running on ws://localhost:3000');
运行项目
1. 启动 websocket 服务器
在 websocket-server
目录下,运行以下命令启动 websocket 服务器:
node server.js
2. 启动 vue 项目
在 websocket-demo
目录下,运行以下命令启动 vue 项目:
npm run serve
结果
打开浏览器,访问 http://localhost:8080
,你应该会看到一个简单的 websocket 演示应用。你可以在输入框中输入消息并发送,消息会通过 websocket 服务器广播给所有连接的客户端,实时更新消息列表。
通过这种方式,你可以实现一个简单的实时消息推送系统。当然,这只是一个基本的示例,实际应用中你可能需要处理更多的逻辑和安全问题。
到此这篇关于websocket实现vue 3和node.js之间的实时消息推送的文章就介绍到这了,更多相关vue 3和node.js的消息推送内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论