websocket實(shí)現(xiàn)Vue?3和Node.js之間的實(shí)時(shí)消息推送
使用 WebSocket 實(shí)現(xiàn)實(shí)時(shí)消息推送是一種高效的方式,可以在客戶端和服務(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 客戶端庫(kù)
在 Vue 項(xiàng)目中,可以使用原生 WebSocket API,也可以使用第三方庫(kù)。這里我們使用原生 WebSocket API。
3. 實(shí)現(xiàn) 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. 創(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ù)器廣播給所有連接的客戶端,實(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)文章
npm出現(xiàn)Cannot?find?module?'XXX\node_modules\npm\bin\np
最近在啟動(dòng)項(xiàng)目的時(shí)候會(huì)報(bào)這個(gè)錯(cuò)就是npm丟失,所以下面這篇文章主要給大家介紹了關(guān)于npm出現(xiàn)Cannot?find?module?'XXX\node_modules\npm\bin\npm-cli.js'錯(cuò)誤的解決方法,需要的朋友可以參考下2022-08-08
垃圾回收器的相關(guān)知識(shí)點(diǎn)總結(jié)
本文是小編在網(wǎng)絡(luò)上整理的關(guān)于垃圾回收器的相關(guān)知識(shí)點(diǎn),很多語(yǔ)言和程序都用的到,有興趣的可以學(xué)習(xí)下。2018-05-05
手把手教你把nodejs部署到linux上跑出hello world
本篇文章主要介紹了手把手教你把nodejs部署到linux上跑出hello world,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06
node?puppeteer爬蟲(chóng)爬取電影網(wǎng)站及生成pdf文檔示例
這篇文章主要介紹了node?puppeteer爬蟲(chóng)爬取電影網(wǎng)站及生成pdf文檔使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
windows系統(tǒng)上完全卸載并重裝Node的步驟(親測(cè)可用)
對(duì)于Windows平臺(tái)來(lái)說(shuō),所有的應(yīng)用程序,其安裝卸載都是一樣的,node.js也不例外,但是還是很多用戶不明白,下面這篇文章主要給大家介紹了關(guān)于windows系統(tǒng)上完全卸載并重裝Node的步驟,需要的朋友可以參考下2023-03-03
Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享
這篇文章主要介紹了Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享,本文給出了服務(wù)器端和客戶端代碼以及運(yùn)行方法,需要的朋友可以參考下2014-12-12
node.js實(shí)現(xiàn)多圖片上傳實(shí)例
這篇文章主要介紹了node.js實(shí)現(xiàn)多圖片上傳實(shí)例,包括路由、控制器和視圖的源碼,重點(diǎn)在圖片上傳處理程序,需要的朋友可以參考下2014-06-06
Nodejs進(jìn)階:核心模塊net入門學(xué)習(xí)與實(shí)例講解
本篇文章主要是介紹了Nodejs之NET模塊,net模塊是同樣是nodejs的核心模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-11-11
Nodejs + Websocket 指定發(fā)送及群聊的實(shí)現(xiàn)
這篇文章主要介紹了Nodejs + Websocket 指定發(fā)送及群聊的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

