国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

websocket實(shí)現(xiàn)聊天室(vue2 + node)

這篇具有很好參考價(jià)值的文章主要介紹了websocket實(shí)現(xiàn)聊天室(vue2 + node)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

通過websocket實(shí)現(xiàn)簡單的聊天室功能

需求分析如圖:

websocket實(shí)現(xiàn)聊天室(vue2 + node),H5新特性,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

搭建的項(xiàng)目結(jié)構(gòu)如圖:

websocket實(shí)現(xiàn)聊天室(vue2 + node),H5新特性,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)
前端步驟:

  1. vue create socket_demo (創(chuàng)建項(xiàng)目)
  2. views下面建立Home , Login組件
  3. 路由里面配置路徑
  4. Home組件內(nèi)部開啟websocket連接

前端相關(guān)組件代碼:
Login組件

<!-- Login.vue -->
<template>
  <div>
    <input type="text" placeholder="請(qǐng)輸入用戶名" v-model="username">&nbsp;&nbsp;
    <button @click="enterRoom">進(jìn)入聊天室</button>
  </div>
</template>

<script>
export default {
  name: 'login',
  data() {
    return {
      username: '',
    }
  },
  methods: {
    enterRoom() {
      let username = this.username.trim()

      if (username.length < 6) {
        alert('用戶名小于6位,請(qǐng)重新輸入!')
        return
      }
      // 保存用戶名
      localStorage.setItem('username', username)
      // 進(jìn)入首頁
      this.$router.push('/')
    },
  }
}
</script>

<style>

</style>

Home組件

<!-- Home.vue -->
<template>
  <div>
    <ul>
      <li v-for="item in msgList" :key="item.id">
        <p>
          <span>{{item.user}}</span>
          <span>{{new Date(item.dateTime)}}</span>
        </p>
        <p>消息:{{item.msg}}</p>
      </li>
    </ul>
    <input type="text" placeholder="請(qǐng)輸入消息" v-model="msg">&nbsp;&nbsp;
    <button @click="sendMsg">發(fā)送</button>
  </div>
</template>

<script>
let ws = new WebSocket('ws://localhost:8000')
export default {
  name: 'home',
  data() {
    return {
      msg: '',
      username: '',
      msgList: []
    }
  },
  mounted() {
    this.username = localStorage.getItem('username')
    if (!this.username) {
      this.$router.push('/login')
      return
    }
    ws.onopen = (e) => {
      console.log('WebSocket opne ', e);
    }
    ws.onclose = (e) => {
      console.log('WebSocket onclose ', e);
    }
    ws.onerror = (e) => {
      console.log('WebSocket onerror ', e);
    }
    // 接收服務(wù)端發(fā)送過來的消息
    ws.onmessage = (e) => {
      // console.log('WebSocket onmessage ', e);f
      let msg = JSON.parse(e.data)
      // console.log('msg', msg);
      this.msgList.push(msg)
    }

  },
  methods: {
    // 發(fā)送消息
    sendMsg() {
      if (!this.msg) {
        return
      }

      let obj = {
        id: Math.floor(Math.random() * 100),
        user: this.username,
        dateTime: new Date().getTime(),
        msg: this.msg
      }
      ws.send(JSON.stringify(obj))
      this.msg = ''
    },
  }

}
</script>

<style>

</style>

router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../views/Login.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/login',
    name: 'login',
    component: Login
  },
  {
    path: '/',
    name: 'home',
    component: () => import('../views/Home.vue')
  }
]

const router = new VueRouter({
  routes,
  mode: 'history'
})

export default router

后端步驟:

  1. 在項(xiàng)目外層創(chuàng)建server文件夾(src目錄同級(jí))
  2. npm init -y創(chuàng)建安裝包
  3. npm i ws (安裝websocket的插件ws)
  4. index.js 文件內(nèi)部開啟服務(wù),初始化相關(guān)事件

后端服務(wù)的啟動(dòng):server下面建立index.js文件,package.json里面配置命令,npm run dev啟動(dòng)
websocket實(shí)現(xiàn)聊天室(vue2 + node),H5新特性,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

index.js文件

const Ws = require('ws');

((Ws) => {
  // 開啟服務(wù)
  const server = new Ws.Server({
    host: 'localhost',
    port: 8000
  })
  const init = () => {
    bindEvent()
  }
  // 初始化相關(guān)事件
  function bindEvent() {
    server.on('open', handleOpen)
    server.on('close', handleClose)
    server.on('error', handleError)
    server.on('connection', handleConnection)
  }
  function handleOpen() {
    console.log('websocket open');
  }
  function handleClose() {
    console.log('websocket Close');
  }
  function handleError() {
    console.log('websocket Error');
  }
  function handleConnection(ws) {
    console.log('websocket Connection');
    ws.on('message', handleMessage)
  }

  function handleMessage(msg) {
    // console.log('msg', msg.toString());
    let message = msg.toString()
    // 獲取所有和服務(wù)端連接的客戶端,并向它們推送消息
    server.clients.forEach(c => {
      c.send(message)
    })
  }

  init()
})(Ws);

效果圖:
websocket實(shí)現(xiàn)聊天室(vue2 + node),H5新特性,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)文章來源地址http://www.zghlxwxcb.cn/news/detail-814980.html

到了這里,關(guān)于websocket實(shí)現(xiàn)聊天室(vue2 + node)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • webSocket 聊天室 node.js 版

    webSocket 聊天室 node.js 版

    全局安裝vue腳手架? npm install @vue/cli -g 創(chuàng)建 vue3 + ts 腳手架? vue create vue3-chatroom src 同級(jí)目錄下建 server: ? 核心代碼: 完整代碼:

    2024年02月12日
    瀏覽(21)
  • WebSocket+Vue實(shí)現(xiàn)簡易多人聊天室 以及 對(duì)異步調(diào)用的理解

    WebSocket+Vue實(shí)現(xiàn)簡易多人聊天室 以及 對(duì)異步調(diào)用的理解

    代碼倉庫:github ??HTTP是不支持長連接的,WebSocket是一種通信協(xié)議,提供了在單一、長連接上進(jìn)行全雙工通信的方式。它被設(shè)計(jì)用于在Web瀏覽器和Web服務(wù)器之間實(shí)現(xiàn),但也可以用于任何需要實(shí)時(shí)通信的應(yīng)用程序。使用ws作為協(xié)議標(biāo)識(shí)符,如果需要加密則使用wss作為協(xié)議標(biāo)識(shí)符

    2024年01月17日
    瀏覽(26)
  • 【W(wǎng)ebSocket&IndexedDB】node+WebSocket&IndexedDB開發(fā)簡易聊天室

    【W(wǎng)ebSocket&IndexedDB】node+WebSocket&IndexedDB開發(fā)簡易聊天室

    序幕介紹: WebSocket 是 HTML5 開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。 講人話就是說: WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,在 WebSocket API 中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)

    2024年02月10日
    瀏覽(47)
  • Vue + Element-Plus + SpringBoot + WebSocket實(shí)現(xiàn)簡易網(wǎng)絡(luò)聊天室

    Vue + Element-Plus + SpringBoot + WebSocket實(shí)現(xiàn)簡易網(wǎng)絡(luò)聊天室

    項(xiàng)目流程圖 1. 前端搭建: ? ? ? ? 前端用Vue+Element-Plus 來搭建,由登錄頁面和聊天頁面組成 1.1 登錄頁面 ? ? ? ? 由一個(gè)昵稱輸入框組成,用戶輸入自己的昵稱若昵稱和別的用戶不重復(fù),則可進(jìn)入聊天室,否則提示錯(cuò)誤并請(qǐng)重新輸入。 ????????這段代碼是一個(gè)Vue.js組件的

    2024年02月03日
    瀏覽(22)
  • 在線聊天室(Vue+Springboot+WebSocket)

    在線聊天室(Vue+Springboot+WebSocket)

    實(shí)現(xiàn)了一個(gè)簡單的在線聊天室的前后端。前端用Vue實(shí)現(xiàn),后端用Springboot實(shí)現(xiàn)。 ????????在線聊天室的功能包括創(chuàng)建用戶和顯示在線用戶列表、發(fā)送消息和顯示消息列表、用戶和消息列表實(shí)時(shí)更新這幾點(diǎn)。以下是整體功能的活動(dòng)圖: 用戶身份 ? ? ? ? 進(jìn)入聊天室的用戶需

    2024年01月15日
    瀏覽(28)
  • 基于SpringBoot+Vue+WebSocket的在線聊天室

    基于SpringBoot+Vue+WebSocket的在線聊天室

    WebSocket 是一種在 Web 應(yīng)用程序中實(shí)現(xiàn)雙向通信的協(xié)議。它提供了一種持久連接,允許客戶端和服務(wù)器之間進(jìn)行實(shí)時(shí)數(shù)據(jù)傳輸,而無需進(jìn)行頻繁的請(qǐng)求和響應(yīng)。 相對(duì)于傳統(tǒng)的 HTTP 請(qǐng)求-響應(yīng)模式,WebSocket 在客戶端和服務(wù)器之間建立起一條長久的雙向通信通道。這意味著服務(wù)器可

    2024年01月16日
    瀏覽(41)
  • Vue+Nodejs 使用WebSocket創(chuàng)建一個(gè)簡易聊天室

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

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

    2024年02月16日
    瀏覽(25)
  • Django實(shí)現(xiàn)websocket聊天室

    WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器雙向通信,即允許服務(wù)器主動(dòng)發(fā)送信息給客戶端。因此,在WebSocket中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸,客戶端和服務(wù)器之間的數(shù)據(jù)交換變

    2023年04月23日
    瀏覽(92)
  • django websocket實(shí)現(xiàn)聊天室功能

    django websocket實(shí)現(xiàn)聊天室功能

    注意事項(xiàng)channel版本 django2.x 需要匹配安裝 channels 2 django3.x 需要匹配安裝 channels 3 Django 3.2.4 channels 3.0.3 Django 3.2.* channels 3.0.2 Django4.2 channles==3.0.5 是因?yàn)樽钚掳鎐hannels默認(rèn)不帶daphne服務(wù)器 直接用命令 python manage.py runsever 默認(rèn)運(yùn)行的是wsgi ,修改,刪除settings中的wsgi,都不能正確運(yùn)

    2024年01月22日
    瀏覽(27)
  • 【W(wǎng)ebSocket】SpringBoot整合WebSocket實(shí)現(xiàn)聊天室(一)

    【W(wǎng)ebSocket】SpringBoot整合WebSocket實(shí)現(xiàn)聊天室(一)

    目錄 一、準(zhǔn)備 1、引入依賴 2、創(chuàng)建配置類 二、相關(guān)注解 首先我們需要在項(xiàng)目中引入依賴,有兩種方式。第一種我們可以在創(chuàng)建Spring Boot項(xiàng)目時(shí)搜索WebSocket然后勾選依賴 第二種是我們可以直接在項(xiàng)目的pom.xml文件中插入以下依賴 我們需要進(jìn)行如下配置 ServerEndpointExporter 是一個(gè)

    2024年02月13日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包