小程序?qū)崿F(xiàn)簡單語音聊天的示例代碼
框架相關(guān)
Demo采用Mpvue框架,后端的WebSocket采用Node.js,文件服務(wù)器直接使用的微信小程序的云開發(fā)的存儲(chǔ)。
儲(chǔ)備知識(shí)
- 微信小程序錄音控制器:recorderManager。
- 微信小程序音頻控制器:innerAudioContext。
- 微信小程序WebSocket。
Node.js端WebScoket實(shí)現(xiàn)
// 基于WS插件 // 引入ws插件 var WebSocketServer = require("ws").Server; // 實(shí)例化WebSocket var wss = new WebSocketServer({ port: 9090 }); // 初始化客戶端數(shù)組 var clients = []; // 建立鏈接監(jiān)聽 wss.on('connection', function (ws) { clients.push(ws); ws.on("message", function (message) { clients.forEach(function (ws1) { if (ws1 !== ws) { ws1.send(message) } }) }) }) // 建立鏈接關(guān)閉監(jiān)聽 ws.on("close", function (message) { clients = clients.filter(function (ws1) { return ws1 !== ws }) })
小程序端實(shí)現(xiàn)
html
<div> <button @click="palyAudio(value)" v-for="(value,index) in chatContent" :key="index">)))))</button> <button class="botom-button" @touchstart="startRecord" @touchend="stopRecord">輸入語音</button> </div>
js
export default { data() { return { // 存儲(chǔ)聊天記錄 chatContent: [], // 錄音控制器 recorderManager: null, // 音頻控制器 innerAudioContext: null }; }, methods: { // 按下按鈕開始錄音 startRecord() { this.recorderManager.start({ format: "mp3" }); }, // 松開按鈕停止錄音 stopRecord() { this.recorderManager.stop(); }, // 播放錄音 palyAudio(value) { this.innerAudioContext.src = value; this.innerAudioContext.play(); } }, created() { this.recorderManager = wx.getRecorderManager(); this.innerAudioContext = wx.createInnerAudioContext(); // 監(jiān)聽錄音開始 this.recorderManager.onStart(res => { console.log("recordStart"); }); // 監(jiān)聽錄音結(jié)束 this.recorderManager.onStop(res => { const audioName = new Date().getTime() + ".mp3"; // 上傳錄音文件 wx.cloud.uploadFile({ cloudPath: audioName, filePath: res.tempFilePath, success: upload => { this.chatContent.push(upload.fileID); // 通過websocket傳遞錄音連接 wx.sendSocketMessage({ data: upload.fileID }); } }); }); // 建立websocket鏈接 wx.connectSocket({ url: "ws://yoursiteandeport", success: res => { console.log("success", res); }, fail: err => { console.log("error", err); } }); // websocket消息監(jiān)聽 wx.onSocketMessage(data => { console.log(data); this.chatContent.push(data.data); }); } };
結(jié)論
- 主要通過WebSocket完成實(shí)時(shí)通訊
- 通過微信小程序提供的API完成語音的錄入和輸出
- 通過文件服務(wù)器上傳語音文件
到此這篇關(guān)于小程序?qū)崿F(xiàn)簡單語音聊天的示例代碼的文章就介紹到這了,更多相關(guān)小程序 語音聊天內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何利用微信小程序和php實(shí)現(xiàn)即時(shí)通訊聊天功能
- python實(shí)現(xiàn)簡單的聊天小程序
- 微信小程序?qū)崿F(xiàn)聊天室功能
- 微信小程序?qū)崿F(xiàn)聊天室
- 微信小程序聊天功能的示例代碼
- 微信小程序websocket實(shí)現(xiàn)即時(shí)聊天功能
- 微信小程序視頻彈幕發(fā)送功能的實(shí)現(xiàn)
- 微信小程序?qū)崿F(xiàn)發(fā)送模板消息功能示例【通過openid推送消息給用戶】
- 微信小程序發(fā)送短信驗(yàn)證碼完整實(shí)例
- 微信小程序?qū)崿F(xiàn)聊天界面發(fā)送功能(示例代碼)
相關(guān)文章
JavaScript中幾種時(shí)間格式之間的簡單轉(zhuǎn)換
近期在練習(xí)或?qū)戫?xiàng)目時(shí)經(jīng)常會(huì)遇到時(shí)間格式的轉(zhuǎn)換問題,今天我就來總結(jié)一下,這篇文章主要給大家介紹了關(guān)于JavaScript中幾種時(shí)間格式之間的簡單轉(zhuǎn)換,需要的朋友可以參考下2024-01-01createObjectURL方法實(shí)現(xiàn)本地圖片預(yù)覽
這篇文章主要為大家詳細(xì)介紹了createObjectURL方法實(shí)現(xiàn)本地圖片預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09微信小程序 JS動(dòng)態(tài)修改樣式的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于微信小程序JS動(dòng)態(tài)修改樣式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12require簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)
下面小編就為大家?guī)硪黄猺equire簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07Javascript Request獲取請(qǐng)求參數(shù)如何實(shí)現(xiàn)
使用Javascript Request獲取參數(shù)的時(shí)候總是提示出錯(cuò),本文為此問題提供詳細(xì)的解決方案,需要了解的朋友可以參考下2012-11-11擴(kuò)展Bootstrap Tooltip插件使其可交互的方法
這篇文章主要介紹了擴(kuò)展Bootstrap Tooltip插件使其可交互的方法,結(jié)合實(shí)例形式分析了bootstrap擴(kuò)展tooltip插件的原理與具體操作技巧,需要的朋友可以參考下2016-11-11全面解析Bootstrap中tooltip、popover的使用方法
這篇文章主要為大家詳細(xì)解析了Bootstrap中tooltip、popover的使用方法,了解提示框、彈出框的實(shí)現(xiàn)原理,感興趣的朋友可以參考一下2016-06-06