小程序?qū)崿F(xiàn)簡(jiǎn)單語(yǔ)音聊天的示例代碼
框架相關(guān)
Demo采用Mpvue框架,后端的WebSocket采用Node.js,文件服務(wù)器直接使用的微信小程序的云開(kāi)發(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)聽(tīng)
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)聽(tīng)
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">輸入語(yǔ)音</button> </div>
js
export default {
data() {
return {
// 存儲(chǔ)聊天記錄
chatContent: [],
// 錄音控制器
recorderManager: null,
// 音頻控制器
innerAudioContext: null
};
},
methods: {
// 按下按鈕開(kāi)始錄音
startRecord() {
this.recorderManager.start({
format: "mp3"
});
},
// 松開(kāi)按鈕停止錄音
stopRecord() {
this.recorderManager.stop();
},
// 播放錄音
palyAudio(value) {
this.innerAudioContext.src = value;
this.innerAudioContext.play();
}
},
created() {
this.recorderManager = wx.getRecorderManager();
this.innerAudioContext = wx.createInnerAudioContext();
// 監(jiān)聽(tīng)錄音開(kāi)始
this.recorderManager.onStart(res => {
console.log("recordStart");
});
// 監(jiān)聽(tīng)錄音結(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);
// 通過(guò)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)聽(tīng)
wx.onSocketMessage(data => {
console.log(data);
this.chatContent.push(data.data);
});
}
};
結(jié)論
- 主要通過(guò)WebSocket完成實(shí)時(shí)通訊
- 通過(guò)微信小程序提供的API完成語(yǔ)音的錄入和輸出
- 通過(guò)文件服務(wù)器上傳語(yǔ)音文件
到此這篇關(guān)于小程序?qū)崿F(xiàn)簡(jiǎn)單語(yǔ)音聊天的示例代碼的文章就介紹到這了,更多相關(guān)小程序 語(yǔ)音聊天內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何利用微信小程序和php實(shí)現(xiàn)即時(shí)通訊聊天功能
- python實(shí)現(xiàn)簡(jiǎn)單的聊天小程序
- 微信小程序?qū)崿F(xiàn)聊天室功能
- 微信小程序?qū)崿F(xiàn)聊天室
- 微信小程序聊天功能的示例代碼
- 微信小程序websocket實(shí)現(xiàn)即時(shí)聊天功能
- 微信小程序視頻彈幕發(fā)送功能的實(shí)現(xiàn)
- 微信小程序?qū)崿F(xiàn)發(fā)送模板消息功能示例【通過(guò)openid推送消息給用戶】
- 微信小程序發(fā)送短信驗(yàn)證碼完整實(shí)例
- 微信小程序?qū)崿F(xiàn)聊天界面發(fā)送功能(示例代碼)
相關(guān)文章
checkbox設(shè)置復(fù)選框的只讀效果不讓用戶勾選
有時(shí)候是只想告知用戶這個(gè)地方是可以進(jìn)行勾選操作的而不想讓用戶在此處勾選(比如在信息展示頁(yè)面),這時(shí)候就需要將復(fù)選框設(shè)置成只讀的效果,具體實(shí)現(xiàn)方法如下2013-08-08
JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-04-04
js遍歷對(duì)象數(shù)組并獲取對(duì)象相應(yīng)的屬性值實(shí)例代碼
對(duì)于數(shù)組或者對(duì)象的遍歷,篩選,提取等操作是前端開(kāi)發(fā)中經(jīng)常有的需求,下面這篇文章主要給大家介紹了關(guān)于js遍歷對(duì)象數(shù)組并獲取對(duì)象相應(yīng)的屬性值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Windows下支持自動(dòng)更新的Electron應(yīng)用腳手架的方法
這篇文章主要介紹了Windows下支持自動(dòng)更新的Electron應(yīng)用腳手架的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
微信小程序左滑動(dòng)顯示菜單功能的實(shí)現(xiàn)
這篇文章主要介紹了微信小程序左滑動(dòng)顯示菜單功能的實(shí)現(xiàn),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
js實(shí)現(xiàn)固定區(qū)域內(nèi)的不重疊隨機(jī)圓
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)固定區(qū)域內(nèi)的不重疊隨機(jī)圓,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
JS實(shí)現(xiàn)無(wú)限輪播無(wú)倒退效果
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)無(wú)限輪播無(wú)倒退效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
js獲取當(dāng)前年月日-YYYYmmDD格式的實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇js獲取當(dāng)前年月日-YYYYmmDD格式的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Javascript isArray 數(shù)組類(lèi)型檢測(cè)函數(shù)
在日常開(kāi)發(fā)中,我們經(jīng)常需要判斷某個(gè)對(duì)象是否是數(shù)組類(lèi)型的,在js中檢測(cè)對(duì)象類(lèi)型的常見(jiàn)的方法有幾種.2009-10-10
js實(shí)現(xiàn)仿MSN帶關(guān)閉功能的右下角彈窗代碼
這篇文章主要介紹了js實(shí)現(xiàn)仿MSN帶關(guān)閉功能的右下角彈窗代碼,涉及javascript操作頁(yè)面元素的布局及屬性的動(dòng)態(tài)變換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

