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

使用 Node.js 和 Socket.io 構(gòu)建實(shí)時(shí)聊天應(yīng)用程序

這篇具有很好參考價(jià)值的文章主要介紹了使用 Node.js 和 Socket.io 構(gòu)建實(shí)時(shí)聊天應(yīng)用程序。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

學(xué)習(xí)的知識點(diǎn)

主要是通過簡易聊天室熟練掌握 Socket.io 相關(guān)方法和運(yùn)行的過程。

需要的插件

Socket.io

梳理應(yīng)用步驟

在進(jìn)行實(shí)現(xiàn)簡易實(shí)時(shí)聊天室之前,我們先梳理一下我們需要的功能和流程。

所需功能:

  • 1、告知用戶已經(jīng)連接到聊天室
  • 2、自己發(fā)送時(shí),頁面展示對應(yīng)的消息展示,而對方看的到信息是誰發(fā)送了什么
  • 3、當(dāng)用戶關(guān)閉頁面后,其他人會收到用戶下線的通知

系統(tǒng)開發(fā)流程:

  • 1、搭建 socketio 服務(wù)
  • 2、創(chuàng)建服務(wù)端與客戶端成對的消息交互事件
  • 3、創(chuàng)建服務(wù)端與客戶端用戶上線和下線交互事件

大致實(shí)現(xiàn)步驟

1、搭建實(shí)時(shí)聊天應(yīng)用的頁面,具體代碼片段如下:

<div id="message_box"></div>
<form id="send_box">
  <input type="text" id="message_input" />
  <button type="submit" id="send_button">發(fā)送</button>
</form>

2、搭建 socketio 服務(wù)

  • 1、安裝所需插件

安裝命令 npm install socket.io

  • 2、創(chuàng)建 socket.io 服務(wù)
const io = require("socket.io")(3000);
  • 3、創(chuàng)建 socket.io 連接

當(dāng)我們創(chuàng)建了 socket.io 的服務(wù)后,我們還需要創(chuàng)建 io 連接后才能向客戶端發(fā)送消息和定義消息監(jiān)聽。創(chuàng)建連接的具體代碼如下:

io.on("connection", (socket) => {});
  • 4、創(chuàng)建對應(yīng)服務(wù)端消息監(jiān)聽事件和發(fā)送對應(yīng)消息給客戶端

創(chuàng)建好 socket.io 連接后,我們就可以自定義客戶端發(fā)送消息的監(jiān)聽事件,并且接收到消息后我們可以使用broadcast.emit方法來發(fā)送消息給。具體的代碼如下:

/**
 * 服務(wù)端創(chuàng)建名為send-chat-message的消息監(jiān)聽
 * 客戶端接收chat-message類的消息
 */
socket.on("send-chat-message", (message) => {
  console.log(message);
  socket.broadcast.emit("chat-message", message); // 發(fā)送消息給客戶端
});
  • 5、搭建 socketio 的客戶端

搭建 socketio 的客戶端只要引入對應(yīng)的依賴文件和連接對應(yīng)的 socketio 服務(wù)就可以,具體的代碼如下:

<!-- 引入socketio所需的依賴 -->
<script defer src="http://localhost:3000/socket.io/socket.io.js"></script>
const socket = io("http://localhost:3000"); // 與socketio服務(wù)端進(jìn)行連接
  • 6、客戶端向 socketio 服務(wù)端發(fā)送消息
socket.emit("send-chat-message", message); // 向socket.io服務(wù)器發(fā)送消息
  • 7、服務(wù)端監(jiān)聽用戶進(jìn)入聊天室和告知客戶端信息
socket.emit("new-user", useName); // 客戶端發(fā)送姓名到執(zhí)行的socketio接收器中

// 監(jiān)聽客戶端發(fā)送過來的new-user類的消息
socket.on("new-user", (name) => {
  users[socket.id] = name;
  socket.broadcast.emit("user-connected", name);
});

核心代碼片段

客戶端

const socket = io("http://localhost:3000");

const useName = prompt("您的姓名是:");
appendMessage("你已經(jīng)加入聊天系統(tǒng)");
socket.emit("new-user", useName);

socket.on("chat-message", (data) => {
  appendMessage(`用戶${data.name}說了: ${data.message}`);
});

socket.on("user-connected", (data) => {
  appendMessage(`${data} 已連接`);
});

socket.on("user-disconnected", (data) => {
  appendMessage(`${data} 已下線`);
});

messageForm.addEventListener("submit", (e) => {
  e.preventDefault();
  const message = messageInput.value;
  appendMessage(`您發(fā)了:${message}`);
  socket.emit("send-chat-message", message); // 向socket.io服務(wù)器發(fā)送消息
  messageInput.value = "";
});

服務(wù)端

const io = require("socket.io")(3000);

io.on("connection", (socket) => {
  socket.on("new-user", (name) => {
    users[socket.id] = name;
    socket.broadcast.emit("user-connected", name);
  });

  socket.on("send-chat-message", (message) => {
    socket.broadcast.emit("chat-message", {
      message: message,
      name: users[socket.id],
    });
  });

  socket.on("disconnect", () => {
    socket.broadcast.emit("user-disconnected", users[socket.id]);
    delete users[socket.id];
  });
});

完整代碼

完整代碼示例下載文章來源地址http://www.zghlxwxcb.cn/news/detail-548643.html

到了這里,關(guān)于使用 Node.js 和 Socket.io 構(gòu)建實(shí)時(shí)聊天應(yīng)用程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 超詳細(xì)--vue3中使用socket.io-client + nodejs使用socket.io 實(shí)現(xiàn)實(shí)時(shí)通信

    第一步:安裝插件 第二步:組件中引入使用 第一步:安裝插件 第二步:在文件中引入使用

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

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

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

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

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

    2024年02月16日
    瀏覽(39)
  • 使用 YOLOv8 和 Streamlit 構(gòu)建實(shí)時(shí)對象檢測和跟蹤應(yīng)用程序:第 1 部分-介紹和設(shè)置

    使用 YOLOv8 和 Streamlit 構(gòu)建實(shí)時(shí)對象檢測和跟蹤應(yīng)用程序:第 1 部分-介紹和設(shè)置

    示例:圖像上的對象檢測 實(shí)時(shí)視頻中的目標(biāo)檢測和跟蹤是計(jì)算機(jī)視覺的一個(gè)重要領(lǐng)域,在監(jiān)控、汽車和機(jī)器人等各個(gè)領(lǐng)域都有廣泛的應(yīng)用。 由于需要能夠識別和跟蹤對象、確定其位置并對它們進(jìn)行實(shí)時(shí)分類的自動化系統(tǒng),對視頻幀中的實(shí)時(shí)對象檢測和跟蹤的需求日益增加。

    2024年02月17日
    瀏覽(28)
  • 如何使用Vue.js構(gòu)建桌面應(yīng)用程序

    Vue.js是一個(gè)流行的JavaScript框架,可以用于構(gòu)建Web應(yīng)用程序。但是,Vue.js也可以用于構(gòu)建桌面應(yīng)用程序。本文將介紹如何使用Vue.js構(gòu)建桌面應(yīng)用程序,包括以下步驟: 1. 選擇一個(gè)Vue.js框架:選擇一個(gè)適合你的Vue.js框架。我們推薦使用Electron,因?yàn)樗亲盍餍械淖烂鎽?yīng)用程序框架

    2024年02月15日
    瀏覽(21)
  • 微信小程序使用stomp.js實(shí)現(xiàn)STOMP傳輸協(xié)議的實(shí)時(shí)聊天

    微信小程序使用stomp.js實(shí)現(xiàn)STOMP傳輸協(xié)議的實(shí)時(shí)聊天

    簡介: stomp.js:uniapp開發(fā)的小程序中使用 stomp.js:官網(wǎng) stomp.js:GitHub 本來使用websocket,后端同事使用了stomp協(xié)議,導(dǎo)致前端也需要對應(yīng)修改。 如何使用 在static/js中新建stomp.js和websocket.js,然后在需要使用的頁面引入監(jiān)聽代碼+發(fā)送代碼即可 代碼如下: 位置:項(xiàng)目/pages/static/

    2024年02月11日
    瀏覽(62)
  • uniapp微信小程序使用stomp.js實(shí)現(xiàn)STOMP傳輸協(xié)議的實(shí)時(shí)聊天

    uniapp微信小程序使用stomp.js實(shí)現(xiàn)STOMP傳輸協(xié)議的實(shí)時(shí)聊天

    簡介: stomp.js:原生微信小程序中使用 stomp.js:官網(wǎng) stomp.js:GitHub 本來使用websocket,后端同事使用了stomp協(xié)議,導(dǎo)致前端也需要對應(yīng)修改。 如何使用 1.yarn add stompjs 2.版本 “stompjs”: “^2.3.3” 3.在static/js中新建websocket.js,然后在需要使用的頁面引入監(jiān)聽代碼+發(fā)送代碼即可 代

    2024年02月11日
    瀏覽(32)
  • 如何在Node.js中使用WebSocket實(shí)現(xiàn)實(shí)時(shí)通信

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

    2024年02月14日
    瀏覽(23)
  • 【Bun1.0】使用 Bun.js 構(gòu)建快速、可靠和安全的 JavaScript 應(yīng)用程序

    【Bun1.0】使用 Bun.js 構(gòu)建快速、可靠和安全的 JavaScript 應(yīng)用程序

    Bun 是一個(gè)現(xiàn)代的JavaScript運(yùn)行環(huán)境,如Node, Deno。主要特性如下: 啟動速度快。更高的性能。完整的工具(打包器、轉(zhuǎn)碼器、包管理)。 https://bun.sh 與傳統(tǒng)的 Node.js 不同,Bun.js 提供了一些新的特性和功能,例如: 更快的啟動速度、更小的內(nèi)存占用、更好的異常處理機(jī)制等等。

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

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

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

    2024年02月03日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包