websocket實(shí)現(xiàn)Vue?3和Node.js之間的實(shí)時(shí)消息推送
使用 WebSocket 實(shí)現(xiàn)實(shí)時(shí)消息推送是一種高效的方式,可以在客戶(hù)端和服務(wù)器之間建立長(zhǎng)連接,實(shí)現(xiàn)低延遲的雙向通信。以下是一個(gè)簡(jiǎn)單的示例,展示如何在前端使用 Vue 3 和后端使用 Node.js 搭建一個(gè) WebSocket 實(shí)現(xiàn)實(shí)時(shí)消息推送的應(yīng)用。
前端(Vue 3)
1. 創(chuàng)建 Vue 項(xiàng)目
首先,創(chuàng)建一個(gè)新的 Vue 3 項(xiàng)目。如果你還沒(méi)有安裝 Vue CLI,可以通過(guò)以下命令安裝:
npm install -g @vue/cli
創(chuàng)建一個(gè)新的 Vue 項(xiàng)目:
vue create websocket-demo cd websocket-demo
2. 安裝 WebSocket 客戶(hù)端庫(kù)
在 Vue 項(xiàng)目中,可以使用原生 WebSocket API,也可以使用第三方庫(kù)。這里我們使用原生 WebSocket API。
3. 實(shí)現(xiàn) WebSocket 客戶(hù)端
在 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. 創(chuàng)建 Node.js 項(xiàng)目
創(chuàng)建一個(gè)新的目錄并初始化一個(gè) Node.js 項(xiàng)目:
mkdir websocket-server cd websocket-server npm init -y
2. 安裝 WebSocket 庫(kù)
安裝 ws
庫(kù),這是一個(gè)簡(jiǎn)單且強(qiáng)大的 WebSocket 庫(kù):
npm install ws
3. 實(shí)現(xiàn) WebSocket 服務(wù)器
在項(xiàng)目根目錄下創(chuàng)建一個(gè) 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');
運(yùn)行項(xiàng)目
1. 啟動(dòng) WebSocket 服務(wù)器
在 websocket-server
目錄下,運(yùn)行以下命令啟動(dòng) WebSocket 服務(wù)器:
node server.js
2. 啟動(dòng) Vue 項(xiàng)目
在 websocket-demo
目錄下,運(yùn)行以下命令啟動(dòng) Vue 項(xiàng)目:
npm run serve
結(jié)果
打開(kāi)瀏覽器,訪問(wèn) http://localhost:8080
,你應(yīng)該會(huì)看到一個(gè)簡(jiǎn)單的 WebSocket 演示應(yīng)用。你可以在輸入框中輸入消息并發(fā)送,消息會(huì)通過(guò) WebSocket 服務(wù)器廣播給所有連接的客戶(hù)端,實(shí)時(shí)更新消息列表。
通過(guò)這種方式,你可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的實(shí)時(shí)消息推送系統(tǒng)。當(dāng)然,這只是一個(gè)基本的示例,實(shí)際應(yīng)用中你可能需要處理更多的邏輯和安全問(wèn)題。
到此這篇關(guān)于websocket實(shí)現(xiàn)Vue 3和Node.js之間的實(shí)時(shí)消息推送的文章就介紹到這了,更多相關(guān)Vue 3和Node.js的消息推送內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs 中的 Buffer 類(lèi)的創(chuàng)建與基本使用
這篇文章主要為大家介紹了Nodejs中Buffer的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10如何在命令行判斷node.js啟動(dòng)了沒(méi)有(最新)
這篇文章主要介紹了如何在命令行判斷node.js啟動(dòng)了沒(méi)有,使用 tasklist 命令列出所有正在運(yùn)行的進(jìn)程,并使用 findstr 命令過(guò)濾出 Node.js 進(jìn)程,感興趣的朋友跟隨小編一起看看吧2024-06-06利用node.js寫(xiě)一個(gè)爬取知乎妹紙圖的小爬蟲(chóng)
這篇文章主要給大家介紹了利用node.js寫(xiě)一個(gè)爬取知乎妹紙圖的小爬蟲(chóng),文中給出了詳細(xì)的示例代碼和介紹,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-05-05npm報(bào)錯(cuò):npm?WARN?config?global?'--global',?&apo
這篇文章主要給大家介紹了關(guān)于npm報(bào)錯(cuò):npm?WARN?config?global?'--global',?'--local'?are?deprecated.?Use?`--location=global`?instead.的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08淺談node使用jwt生成的token應(yīng)該存在哪里
早上逛某乎的時(shí)候,遇到一位同學(xué)在問(wèn)這個(gè)問(wèn)題,很好奇jwt的存儲(chǔ)位置。本文詳細(xì)的介紹一下,感興趣的可以了解一下2021-06-06使用Node.js創(chuàng)建HTTP服務(wù)器并實(shí)現(xiàn)公網(wǎng)訪問(wèn)本地Server的步驟
Node.js含有一系列內(nèi)置模塊,使得程序可以脫離 Apache HTTP Server 或 IIS,作為獨(dú)立服務(wù)器運(yùn),下面將介紹如何簡(jiǎn)單幾步實(shí)現(xiàn)遠(yuǎn)程公共網(wǎng)絡(luò)下訪問(wèn)windwos node.js的服務(wù)端,感興趣的朋友一起看看吧2023-11-11