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

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1)

這篇具有很好參考價值的文章主要介紹了使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?這篇文章使用選項式API的寫法,以實現(xiàn)群聊和私聊為主

客戶端自然是對應(yīng)使用vue3框架,服務(wù)端使用node.js配合express、http、socket.io、file等庫來實現(xiàn),具體如下:

一、完成客戶端部分的配置代碼

1、下載所需的依賴

npm install vue-3-socket.io socket.io-client

2、做socket客戶端配置

// 引入相關(guān)依賴
import VueSocketIO from "vue-3-socket.io";
import SocketIO from "socket.io-client";

// 創(chuàng)建一個 Socket 連接
const socketio = new VueSocketIO({
  debug: false, // 布爾值,控制是否打印調(diào)試信息
  // SocketIO庫的客戶端連接對象,指定連接服務(wù)端的地址和傳輸方式
  connection: SocketIO("http://localhost:3000", {
    transports: ["websocket"],
  }),
  // 額外添加的請求頭信息
  extraHeaders: { "Access-Control-Allow-Origin": "*" },
  // SocketIO庫的配置項對象,用于控制自動連接
  options: {
    autoConnect: false,
  },
});

注:"http://localhost:3000",該地址端口是對應(yīng)后面配置服務(wù)端時所開放的端口。

將 socketio 引入app

const app = createApp(App);
app.use(socketio)

二、完成服務(wù)端的配置代碼

1、創(chuàng)建一個 node.js 項目

會的直接跳過到下一步

具體如下:

① 先新建一個項目文件夾

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

注:盡量不要放在前端的項目文件夾中

② 使用命令行創(chuàng)建項目
npm init -y

此時生成一個json文件,如下

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

{
  "name": "chat",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
③ 在同級下建立一個index.js文件

注:這是對應(yīng)上述代碼中"main"字段的值

操作如下:

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

至此創(chuàng)建完畢,后面開始配置服務(wù)端socket

2、開始配置服務(wù)端socket

注:配置代碼寫在 index.js 文件

① 下載所需的依賴
npm install express file http socket.io
② 做socket服務(wù)端配置
// 引入express庫
var app = require("express")();

// 創(chuàng)建http服務(wù)器并將express應(yīng)用程序作為參數(shù)傳入
var http = require("http").Server(app);

// 引入Socket.IO庫,并將http服務(wù)器和配置選項作為參數(shù)傳入來創(chuàng)建Socket.IO實例
var io = require("socket.io")(http, {
    // 允許使用EIO3協(xié)議
  allowEIO3: true,
    // 跨域配置,指定允許跨域的源地址、請求方法和憑據(jù)(credentials)設(shè)置
  cors: {
    origin: "http://localhost:3000",
    methods: ["GET", "POST"],
    credentials: true,
  },
});


// 定義根路由"/"的GET請求處理函數(shù)
app.get("/", (req, res) => {
  // 發(fā)送index.html文件作為響應(yīng)
  res.sendFile(__dirname + "/index.html");
});


// 監(jiān)聽客戶端發(fā)送的連接,端口一定要和客戶端的匹配上
http.listen(3000, () => {
  console.log("listening on *:3000");
});
③?啟動 node 服務(wù)端

?如果沒有啟動服務(wù)端??蛻舳藭恢眻體ebsocket的錯,屬于正?,F(xiàn)象,啟動node項目就行了

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

打開chat下的終端,輸入 node index.js 啟動項目,建立網(wǎng)絡(luò)連接,客戶端就不會再報錯了

注:每次修改服務(wù)端代碼都要重新啟動一次

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

④?connection 鉤子的使用
// 定義根路由"/"的GET請求處理函數(shù)
app.get("/", (req, res) => {
  // 發(fā)送index.html文件作為響應(yīng)
  res.sendFile(__dirname + "/index.html");
});


// 新增的代碼
// 監(jiān)聽客戶端連接
io.on("connection", (socket) => {
  console.log("有用戶連接");
})


// 監(jiān)聽客戶端發(fā)送的連接,端口一定要和客戶端的匹配上
http.listen(3000, () => {
  console.log("listening on *:3000");
});

connection鉤子是on方法內(nèi)置的, 當(dāng)有客戶端發(fā)起連接并成功時會觸發(fā)該鉤子,效果如下

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

至此已經(jīng)完成所有配置,下面分別介紹怎么通過socket實現(xiàn)群聊和私聊的邏輯

三、實現(xiàn)群聊

1、服務(wù)端代碼

io.on("connection", (socket) => {
  console.log("有用戶連接");

  // 自定義一個chat監(jiān)聽方法,當(dāng)客戶端發(fā)布到這個方法時,我們可以獲取到發(fā)布的消息
  socket.on("chat", (msg) => {
    // broadcast: 是指你發(fā)送了消息,但是服務(wù)端會發(fā)送給除你之外的客戶端,不會返回給你
    socket.broadcast.emit("advertise", msg);
  });
});

2、客戶端代碼

先寫一些基本樣式,隨意寫一下用于發(fā)送消息就行了,主要還是圍繞功能講

<template>
  <div class="chat">
    <div class="msgList">
      <div class="item"></div>
    </div>

    <div class="input">
      <input type="text" v-model="msg" />

      <div class="btn" @click="input">send</div>
    </div>
  </div>
</template>

<style scoped lang="scss">
.chat {
  > .input {
    position: absolute;
    bottom: 10px;
    left: 0;
    right: 0;

    margin: 0 10px;

    display: flex;

    > input {
      flex: 1;
      padding-left: 5px;
    }

    > .btn {
      background: #999;
      padding: 3px 5px;
      margin-left: 10px;

      border-radius: 3px;
    }
  }
}
</style>

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

js代碼

<script>
export default {
  data() {
    let msg = "";

    return { msg };
  },
  methods: {
    // 發(fā)布消息方法
    send() {
      // 將發(fā)布到服務(wù)端
      // 在服務(wù)端我們已經(jīng)寫好了對應(yīng)的監(jiān)聽方法,只要有消息發(fā)布到服務(wù)端就會被接收到
      this.$socket.emit("chat", this.msg);

      // 清空輸入框
      this.msg = "";
    },
  },
  // socket內(nèi)置的鉤子,用來監(jiān)聽服務(wù)端發(fā)布的方法
  sockets: {
    // 在服務(wù)端自定義的發(fā)布方法
    advertise(msg) {
      // 如果監(jiān)聽到服務(wù)端發(fā)來的信息,輸出到控制臺,這里可以寫自己的業(yè)務(wù)邏輯
      console.log(msg);
    },
  },
};
</script>

嘗試一下

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

先是輸入消息,然后點擊send按鈕,結(jié)果如下

使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1),前端項目經(jīng)驗,socket.io 實時聊天,npm,vue.js,前端,websocket,node.js,javascript

在別的客戶端接收到了消息打印在控制臺中,并且發(fā)布消息的客戶端沒有監(jiān)聽到消息,至此我們就實現(xiàn)了群聊功能。

但是上述的群聊并非真正意義上的群聊,只是類似廣播的功能,將信息發(fā)布到全部客戶端中,可以用來做類似廣場這樣的功能;而群聊應(yīng)該是創(chuàng)建一個聊天室,跟socket.io中的room屬性有關(guān),等后面再介紹這個功能。

這篇文章暫時寫到這里,這兩天會繼續(xù)更新私聊的功能;下篇文章會講到如何在寶塔中部署node項目并讓你的代碼在生產(chǎn)環(huán)境中正常運行,最后會在發(fā)布一篇有關(guān)群聊的文章,如果有疑惑可以在評論區(qū)留言,我每天都會追蹤最新動態(tài),如果有幫助就留下你的贊或關(guān)注吧文章來源地址http://www.zghlxwxcb.cn/news/detail-742646.html

到了這里,關(guān)于使用 vue-3-socket.io 插件以及node.js實現(xiàn)實時聊天(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 如何在Node.js中使用WebSocket實現(xiàn)實時通信

    在Web應(yīng)用程序中,實時通信已經(jīng)成為一種必不可少的功能。WebSocket是一種基于TCP的協(xié)議,它提供了雙向通信的能力,使得實時通信變得更加容易。Node.js提供了一個內(nèi)置的WebSocket模塊,使得開發(fā)實時通信應(yīng)用程序變得非常簡單。在本文中,我將介紹如何在Node.js中使用WebSocket實

    2024年02月14日
    瀏覽(23)
  • web前端在vue中通過??挡寮度胍曨l,實現(xiàn)實時預(yù)覽以及視頻回放功能

    ? 首先第一步,在??倒倬W(wǎng)下??狄曨l插件下載到電腦中??甸_放平臺 ? ?然后新建一個組件,下面我直接把我封裝好的組件代碼拿出來,重要的地方我在代碼中添加了注釋 ? 以上是封裝的組件,下面是調(diào)用的方法? ?

    2024年02月03日
    瀏覽(24)
  • 了解JS三種實時通信方式——Eventsource、websocket與socket.io之間的差異和優(yōu)缺點

    EventSource EventSource 是一種輕量級的 API,用于獲取來自服務(wù)器的實時事件。它是 WebSockets 的替代方案,因為它比 WebSockets 更簡單,更適合處理服務(wù)器向客戶端發(fā)送數(shù)據(jù)的情況。使用 EventSource ,只有服務(wù)器能夠發(fā)送消息,所以它更安全。但是,它不支持雙向通信或客戶端發(fā)送消

    2024年02月08日
    瀏覽(24)
  • 如何使用websocket+node.js實現(xiàn)pc后臺與小程序端實時通信

    如何使用websocket+node.js實現(xiàn)pc后臺與小程序端實時通信

    實現(xiàn)功能:實現(xiàn)pc后臺與小程序端互發(fā)通信能夠?qū)崟r檢測到 1.安裝ws依賴 2.創(chuàng)建index.js 3.打開終端,啟動服務(wù) 這里是手動點擊連接按鈕,發(fā)起的websocket連接,可自行更改到其他合適的地方連接websocket 1.創(chuàng)建兩個按鈕,連接按鈕,發(fā)送按鈕 2.定義事件,連接ws

    2024年02月03日
    瀏覽(26)
  • 如何實現(xiàn)前端實時通信(WebSocket、Socket.io等)?

    如何實現(xiàn)前端實時通信(WebSocket、Socket.io等)?

    聚沙成塔·每天進(jìn)步一點點 前端入門之旅:探索Web開發(fā)的奇妙世界 歡迎來到前端入門之旅!感興趣的可以訂閱本專欄哦!這個專欄是為那些對Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一個系統(tǒng)而

    2024年01月22日
    瀏覽(33)
  • vue和node使用websocket實現(xiàn)數(shù)據(jù)推送,實時聊天

    vue和node使用websocket實現(xiàn)數(shù)據(jù)推送,實時聊天

    需求:node做后端根據(jù)websocket,連接數(shù)據(jù)庫,數(shù)據(jù)庫的字段改變后,前端不用刷新頁面也能更新到數(shù)據(jù),前端也可以發(fā)送消息給后端,后端接受后把前端消息做處理再推送給前端展示 使用node ./app.js運行項目 在需要使用websocket連接的頁面引入 默認(rèn)如下: id為243 在數(shù)據(jù)庫改為

    2024年02月15日
    瀏覽(30)
  • websocket實時通訊和socket.io實時通信庫的使用;心跳機制與斷線重連

    https://zh.javascript.info/websocket WebSocket 是一種網(wǎng)絡(luò)通信協(xié)議,就類似于 HTTP 也是一種通信協(xié)議。 為什么需要 WebSocket? 因為 HTTP 協(xié)議有一個缺陷:通信只能由客戶端發(fā)起。 代碼解析: 創(chuàng)建WebSocket實例:通過 new WebSocket() 創(chuàng)建一個WebSocket實例。在括號中傳入服務(wù)器的URL,該URL指定了

    2024年02月16日
    瀏覽(40)
  • 【Vue3+Ts project】認(rèn)識 Websocket 以及 socket.io 庫

    【Vue3+Ts project】認(rèn)識 Websocket 以及 socket.io 庫

    目錄 Websocket? socket.io? Socket.iO 事件名總結(jié): Socket.IO 方法總結(jié) 作用: WebSocket 仍然提供實時的雙向通信功能,使用Vue3 應(yīng)用程序能夠與服務(wù)器進(jìn)行實時數(shù)據(jù)交換 降低延遲和網(wǎng)絡(luò)開銷:相比傳統(tǒng)的HTTP請求-響應(yīng)模式,WebSocket建立了持久連接,減少了網(wǎng)絡(luò)開銷和延遲,適用于需要

    2024年02月13日
    瀏覽(25)
  • Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(下)

    Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(下)

    在進(jìn)入文章的正文之前,我們先一起了解一下關(guān)于 CSDN 今年的 1024 程序員節(jié)。與此同時這也是我在 CSDN 參與的第二個 1024 程序員節(jié)日,轉(zhuǎn)眼間也快寫博客兩年時間,去年很遺憾沒有去到深圳(疫情原因)線下參加這個有趣而充實的峰會。今年沒有特殊情況的話一定會如約而至

    2024年02月06日
    瀏覽(25)
  • Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(上)

    Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(上)

    今天久違的更新一下關(guān)于 Vue 的文章了,本篇文章是基于 Vue3 + Node.js + ElementPlus 的實戰(zhàn)項目分享,實戰(zhàn)內(nèi)容包括有打印插件 Print.js 的使用,以及關(guān)于 ElementPlus 中的 el-table 與 el-pagination 的深入使用。本次項目以文章(axios 實戰(zhàn)進(jìn)階練習(xí)——基于 Vue3 + Node.js + ElementPlus 實現(xiàn)的聯(lián)

    2024年02月06日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包