最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue+Nodejs使用WebSocket創(chuàng)建一個(gè)簡易聊天室教程

 更新時(shí)間:2025年06月16日 09:13:02   作者:不想起名55  
這篇文章主要介紹了Vue+Nodejs使用WebSocket創(chuàng)建一個(gè)簡易聊天室教程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、頁面效果

二、架構(gòu)流程

使用vue編寫前端頁面,nodejs處理服務(wù)端消息,WebSocket進(jìn)行實(shí)時(shí)通信

三、技術(shù)細(xì)節(jié)

1.客戶端

<template>
    <div>
        <form onsubmit="return false">
            <textarea  id="responseTest"  style="width: 500px; height: 300px"  ></textarea>
            <br />
            <input  type="text"  name="message"  style="width: 300px"  :value="inputVal"  @input="input"  />
            <input type="button" value="發(fā)送消息" @click="send(inputVal)" />
            <input type="button" value="清空聊天記錄" @click="clean" />
        </form>
    </div>
</template>

<script>
export default {
    data() {
        return {
          inputVal: '歡迎來到二二得四的聊天室',
          socket:null
        }
    },
    methods: {
        testWebsocket() {
            if (!window.WebSocket) {
                window.WebSocket = window.MozWebSocket
            }
            if (window.WebSocket) {
                this.socket = new WebSocket('ws://localhost:8088/ws')
              this.socket.onmessage = function (event) {
                    var ta = document.getElementById('responseTest')
                    ta.value = ta.value + '\n' + event.data
                }
              this.socket.onopen = function (event) {
                    var ta = document.getElementById('responseTest')
                    ta.value = '連接開啟!'
                }
                this.socket.onclose = function (event) {
                    var ta = document.getElementById('responseTest')
                    ta.value = '連接關(guān)閉!'
                }
            } else {
                alert('你的瀏覽器不支持WebSocket')
            }
        },
        input(e) {
            this.inputVal = e.detail.value
        },
        clean() {
            document.getElementById('responseTest').value = ''
        },
        send(message) {
            if (!window.WebSocket) {
                return
            }
          if (this.socket.readyState === WebSocket.OPEN) {
              this.socket.send(message)
            } else {
                alert('連接沒有開啟')
            }
        },
    },
    mounted() {
        this.testWebsocket()
    },
}
</script>

<style></style>

2. 服務(wù)端

使用的是nodejs

const ws = require('ws')

const webserve = new ws.Server({port:8088})

//打開WebSocket服務(wù)器:通過監(jiān)聽open事件打開服務(wù)器
webserve.on('open',function open() {
    console.log('connected')
})

//關(guān)閉WebSocket服務(wù)器:通過監(jiān)聽close事件關(guān)閉服務(wù)器
webserve.on('close',function close() {
    console.log('disconnected')
})

//監(jiān)聽連接:ws通過connection事件來監(jiān)聽連接
webserve.on('connection',function connection(res,req) {
    const ip1 =  req.headers['x-forwarded-for'] || req.socket.remoteAddress
    const port1 = req.socket.remotePort
    const clientName = ip1+port1
    console.log('連接已開啟,開始發(fā)送消息')

    // 發(fā)送數(shù)據(jù):ws通過send()方法來發(fā)送到客戶端數(shù)據(jù)
    // res.send('welcome,'+clientName)

  //接收數(shù)據(jù):ws通過message事件來接收數(shù)據(jù)。當(dāng)客戶端有消息發(fā)送給服務(wù)器時(shí),服務(wù)器就能夠觸發(fā)該消息
    res.on('message',function incoming(message) {
        console.log('received: %s from %s',message,clientName)

        /**
         * 準(zhǔn)備的狀態(tài):ws中WebSocket類具有以下4中準(zhǔn)備狀態(tài)
         * 1、CONNCETION:值為0,表示連接還沒有打開
         * 2、OPEN:值為1,表示連接已經(jīng)打開,可以通信了
         * 3、CLOSING:值為2,表示連接正在關(guān)閉
         * 4、CLOSED:值為2,表示連接已經(jīng)關(guān)閉
         */
        webserve.clients.forEach(function each(client) {
            if(client.readyState === ws.OPEN){
                client.send(message.toString())
            }
        })
    })
})

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue2 前后端分離項(xiàng)目ajax跨域session問題解決方法

    vue2 前后端分離項(xiàng)目ajax跨域session問題解決方法

    本篇文章主要介紹了vue2 前后端分離項(xiàng)目ajax跨域session問題解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Vue中使用和移除總線Bus的注意事項(xiàng)詳解

    Vue中使用和移除總線Bus的注意事項(xiàng)詳解

    Vue中的總線Bus是一種通信機(jī)制,可用于組件間的數(shù)據(jù)傳遞和事件觸發(fā)。使用時(shí)需要注意Bus的命名和定義、監(jiān)聽和觸發(fā)事件的方法、移除和銷毀Bus的時(shí)機(jī)和方式等問題。合理使用總線Bus可以提高組件的復(fù)用性和可維護(hù)性,但過度依賴可能會(huì)導(dǎo)致代碼耦合和難以維護(hù)
    2023-04-04
  • vite構(gòu)建vue3項(xiàng)目的全過程記錄

    vite構(gòu)建vue3項(xiàng)目的全過程記錄

    vite是VUE3創(chuàng)建項(xiàng)目的工具,項(xiàng)目大了之后,性能明顯優(yōu)于webpack,下面這篇文章主要給大家介紹了關(guān)于vite構(gòu)建vue3項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue引入js數(shù)字小鍵盤的實(shí)現(xiàn)代碼

    vue引入js數(shù)字小鍵盤的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue引入js數(shù)字小鍵盤的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • uni-app中vue3表單校驗(yàn)失敗的問題及解決方法

    uni-app中vue3表單校驗(yàn)失敗的問題及解決方法

    最近遇到這樣的問題在app中使用uni-forms表單,并添加校驗(yàn)規(guī)則,問題是即使輸入內(nèi)容,表單校驗(yàn)依然失敗,本文給大家分享uni-app中vue3表單校驗(yàn)失敗的問題及解決方法,感興趣的朋友一起看看吧
    2023-12-12
  • 基于Vue封裝實(shí)現(xiàn)全屏功能工具類

    基于Vue封裝實(shí)現(xiàn)全屏功能工具類

    在?Web?應(yīng)用程序中,有時(shí)需要為某些內(nèi)容提供全屏顯示的功能,本文將介紹如何使用?Vue.js?3?的?Composition?API?創(chuàng)建一個(gè)全屏功能的工具類,希望對大家有所幫助
    2024-03-03
  • Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解

    Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解

    這篇文章主要介紹了Vue2.x與Vue3.x中路由鉤子的區(qū)別,分別介紹了路由鉤子的分類,路由配置守衛(wèi)鉤子以及組件內(nèi)守衛(wèi)鉤子等有需要的朋友可以借鑒參考下
    2021-09-09
  • vue關(guān)于重置表單數(shù)據(jù)出現(xiàn)undefined的解決

    vue關(guān)于重置表單數(shù)據(jù)出現(xiàn)undefined的解決

    這篇文章主要介紹了vue關(guān)于重置表單數(shù)據(jù)出現(xiàn)undefined的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vuex 使用 v-model 配合 state的方法

    Vuex 使用 v-model 配合 state的方法

    這篇文章主要介紹了Vuex 使用 v-model 配合 state的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue watch自動(dòng)檢測數(shù)據(jù)變化實(shí)時(shí)渲染的方法

    vue watch自動(dòng)檢測數(shù)據(jù)變化實(shí)時(shí)渲染的方法

    本篇文章主要介紹了vue watch自動(dòng)檢測數(shù)據(jù)變化實(shí)時(shí)渲染的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

郴州市| 嘉善县| 兴宁市| 浦江县| 南陵县| 关岭| 九江市| 临澧县| 宁德市| 临夏县| 朝阳区| 盐源县| 陇川县| 成安县| 府谷县| 察隅县| 元谋县| 海安县| 六安市| 静宁县| 海阳市| 霍林郭勒市| 行唐县| 绵竹市| 威远县| 罗定市| 吴旗县| 元阳县| 廉江市| 吉隆县| 伊川县| 从江县| 遵义县| 吉安县| 阳高县| 商南县| 丹巴县| 扬州市| 天津市| 康定县| 铁力市|