node怎麼實現語音聊天

2023-01-28 18:01:04

node實現語音聊天的方法:1、使用nodejs模組express建立一個web伺服器;2、建立https連線;3、通過「socket.io」實現使用者端與伺服器端實時通訊即可。

本教學操作環境:Windows10系統、node-v16.18.0版、DELL G3電腦

node怎麼實現語音聊天?

基於nodejs的語音聊天

da358ad935ac13429413ccc96473f60.jpg

描述

程式在 的群聊功能基礎上利用webRTC技術,新增了語音群聊功能,在其他人鍵盤輸入時,會出現類似微信的對方正在輸入字樣。

  • demo:
  • source code:

使用的nodejs模組

  • express:建立一個web伺服器
  • https:建立https連線(區域網或者外網webRTC需要https連線,具體見)
  • socket.io:使用者端與伺服器端實時通訊

js檔案

  • chat.js:實現按鈕事件的註冊、文字資料的傳送等
  • record.js:實現語音訊息的錄取、播放、傳送等

結構圖和流程圖

在這裡插入圖片描述

在這裡插入圖片描述

文字通訊

詳情見public/js/chat.js註釋

傳送資料

  • 進入頁面進行與伺服器的socket連線
  • 使用者端輸入文字資料
  • 客戶點選sent按鈕,觸發click事件,併產生chat事件準備想伺服器emit
  • soket連線傳送給伺服器chat事件和使用者端產生的資料

接收資料

  • socket接受到伺服器傳送來的data和伺服器傳送來的chat事件
  • 提取data文字
  • js在index.html新增文字資料,完成接收資料並顯示

語音通訊

詳情見public/js/record.js註釋

  • 接受和傳送語音資料類似與文字資料的通訊
  • 利用webRTC獲取到使用者的視訊或者音訊轉換為blob格式資料,並行送給伺服器資料。
  • 接受訊息時,資料型別是blob格式,對blob資料解析,利用html5的audio標籤進行播放

伺服器轉發資料

使用者端傳送給伺服器資料,伺服器觸發chat事件,將使用者端傳送來的資料以廣播的形式傳送到每一個使用者端,完成群聊的功能。

建立https證書

在localhost中使用webRTC不需要使用https,但是在區域網或者外網使用webRTC,必須強制使用webRTC,這裡採用自己生成證書供測試使用,具體生成方法和設定https方法:

  • 生成自己簽名的證書(有效期365天)
 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
登入後複製
  • 使用https連線的express,例子如下:
  var fs = require('fs'),
    https = require('https'),
    express = require('express'),
    app = express();

    https.createServer({
      key: fs.readFileSync('key.pem'),
      cert: fs.readFileSync('cert.pem')
    }, app).listen(55555);

    app.get('/', function (req, res) {
      res.header('Content-type', 'text/html');
      return res.end('<h1>Hello, Secure World!</h1>');
    });
登入後複製
推薦學習:《》

以上就是node怎麼實現語音聊天的詳細內容,更多請關注TW511.COM其它相關文章!