vue+websocket demo 實例


vue+websocket demo:

 
         
<!-- vue + websocket連接demo -->
<template>
    <div>
        <h1>vue + websocket連接demo</h1>
        <Button @click="test">test</Button>
    </div>
</template>

<script>
let socket;
// 給服務器發送一個字符串:
export default {
    data() {
        return {
            // 連接標志位
            lockReconnect: false,
            wsCfg: {
                // websocket地址
                url: "ws://127.0.0.1:8081"
            }
        };
    },
    methods: {
        createWebSocket() {
            try {
                // 創建Web Socket 連接
                socket = new WebSocket(this.wsCfg.url);
                // 初始化事件
                this.initEventHandle(socket);
            } catch (e) {
                // 出錯時重新連接
                this.reconnect(this.wsCfg.url);
            }
        },
        initEventHandle(socket) {
            // 連接關閉時觸發
            socket.onclose = () => {
                console.log("連接關閉");
            };
            // 通信發生錯誤時觸發
            socket.onerror = () => {
                // 重新創建長連接
                this.reconnect();
            };
            // 連接建立時觸發
            socket.onopen = () => {
                console.log("連接成功");
            };
            // 客戶端接收服務端數據時觸發
            socket.onmessage = msg => {
                // 業務邏輯處理
                console.log(msg.data, "ws:data");
            };
        },
        reconnect() {
            if (this.lockReconnect) {
                return;
            }
            this.lockReconnect = true;

            // 沒連接上會一直重連,設置延遲避免請求過多
            setTimeout(() => {
                this.lockReconnect = false;
                this.createWebSocket(this.wsCfg.url);
            }, 2000);
        },
        test() {
            // 給服務器發送一個字符串:
            // ws.send("Hello!");
            socket.send("Hello!");
        }
    },
    mounted() {
        this.createWebSocket();
    }
};
</script>
 

 

 

node 服務端啟websocket服務:

// 導入WebSocket模塊:
const WebSocket = require('ws'); // 引用Server類:
const WebSocketServer = WebSocket.Server; // 實例化:
const wss = new WebSocketServer({ port: 8081 }); wss.on('connection', function (ws) { console.log(`[SERVER] connection()`); ws.on('message', function (message) { console.log(`[SERVER] Received: ${message}`); ws.send(`ECHO: ${message}`, (err) => { if (err) { console.log(`[SERVER] error: ${err}`); } }); }) });

運行前后端代碼:

 

 

 前端頁面可以看到發送websocket數據后,接收到了后端的數據,實現了雙向通信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM