站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        node怎么實(shí)現(xiàn)語音聊天

        node實(shí)現(xiàn)語音聊天的方法:1、使用nodejs模塊express創(chuàng)建一個(gè)web服務(wù)器;2、創(chuàng)建https連接;3、通過“socket.io”實(shí)現(xiàn)客戶端與服務(wù)端實(shí)時(shí)通信即可。

        node怎么實(shí)現(xiàn)語音聊天

        本教程操作環(huán)境:Windows10系統(tǒng)、node-v16.18.0版、DELL G3電腦

        node怎么實(shí)現(xiàn)語音聊天?

        基于nodejs的語音聊天

        node怎么實(shí)現(xiàn)語音聊天

        描述

        程序在 iamshaunjp 的群聊功能基礎(chǔ)上利用webRTC技術(shù),添加了語音群聊功能,在其他人鍵盤輸入時(shí),會(huì)出現(xiàn)類似微信的對(duì)方正在輸入字樣。

        • demo:https://www.php.cn/link/b2fc614266ad3627dca4dc5d37885d58
        • source code: https://www.php.cn/link/12a8193db4825679dc9baf49305efe92

        使用的nodejs模塊

        • express:創(chuàng)建一個(gè)web服務(wù)器
        • https:創(chuàng)建https連接(局域網(wǎng)或者外網(wǎng)webRTC需要https連接,具體見tutoril)
        • socket.io:客戶端與服務(wù)端實(shí)時(shí)通信

        js文件

        • chat.js:實(shí)現(xiàn)按鈕事件的注冊、文本數(shù)據(jù)的發(fā)送等
        • record.js:實(shí)現(xiàn)語音消息的錄取、播放、發(fā)送等

        結(jié)構(gòu)圖和流程圖

        node怎么實(shí)現(xiàn)語音聊天

        node怎么實(shí)現(xiàn)語音聊天

        文本通信

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

        發(fā)送數(shù)據(jù)

        • 進(jìn)入頁面進(jìn)行與服務(wù)器的socket連接
        • 客戶端輸入文本數(shù)據(jù)
        • 客戶點(diǎn)擊sent按鈕,觸發(fā)click事件,并產(chǎn)生chat事件準(zhǔn)備想服務(wù)器emit
        • soket連接發(fā)送給服務(wù)器chat事件和客戶端產(chǎn)生的數(shù)據(jù)

        接收數(shù)據(jù)

        • socket接受到服務(wù)器發(fā)送來的data和服務(wù)器發(fā)送來的chat事件
        • 提取data文本
        • js在index.html添加文本數(shù)據(jù),完成接收數(shù)據(jù)并顯示

        語音通信

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

        • 接受和發(fā)送語音數(shù)據(jù)類似與文本數(shù)據(jù)的通信
        • 利用webRTC獲取到用戶的視頻或者音頻轉(zhuǎn)換為blob格式數(shù)據(jù),并發(fā)送給服務(wù)器數(shù)據(jù)。
        • 接受消息時(shí),數(shù)據(jù)類型是blob格式,對(duì)blob數(shù)據(jù)解析,利用html5的audio標(biāo)簽進(jìn)行播放

        服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)

        客戶端發(fā)送給服務(wù)器數(shù)據(jù),服務(wù)器觸發(fā)chat事件,將客戶端發(fā)送來的數(shù)據(jù)以廣播的形式發(fā)送到每一個(gè)客戶端,完成群聊的功能。

        創(chuàng)建https證書

        在localhost中使用webRTC不需要使用https,但是在局域網(wǎng)或者外網(wǎng)使用webRTC,必須強(qiáng)制使用webRTC,這里采用自己生成證書供測試使用,具體生成方法和設(shè)置https方法參考博客:

        • 生成自己簽名的證書(有效期365天)

         openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
        登錄后復(fù)制

        • 使用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>');     });
        登錄后復(fù)制

        推薦學(xué)習(xí):《node.js視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 99精品高清视频一区二区| 欧美成人精品一级高清片| 国产成人久久精品一区二区三区 | 国产在线精品福利大全| 99精品热这里只有精品| 四虎精品亚洲一区二区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产精品香蕉在线观看| 国产精品久久久久久影院 | 精品一区二区三区中文字幕| 精品无码国产一区二区三区51安| 亚欧无码精品无码有性视频| 国产小呦泬泬99精品| 欧美+亚洲+精品+三区| 成人精品综合免费视频| 久久精品无码一区二区无码| 亚洲午夜精品久久久久久app| 久久99国产精品成人欧美| 国产精品激情综合久久| 91精品一区二区综合在线| 精品国产免费一区二区三区香蕉 | 久久精品国产亚洲Aⅴ香蕉| 高清在线国产午夜精品| 久久久久夜夜夜精品国产| 国产99re在线观看只有精品| 凹凸国产熟女精品视频app| 精品无码一区在线观看| 日产精品久久久久久久| 日韩精品久久久久久免费| 无码国产乱人伦偷精品视频| 亚洲精品乱码久久久久久蜜桃图片 | 亚洲精品国产V片在线观看| 日韩精品一区二区三区不卡| 久久精品无码一区二区三区免费| 精品久久久久久久久久中文字幕 | 国亚洲欧美日韩精品| 国产亚洲精品免费视频播放| 国产午夜精品理论片免费观看| 88久久精品无码一区二区毛片 | HEYZO无码综合国产精品227| 国产a视频精品免费观看|