最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小程序?qū)崿F(xiàn)簡(jiǎn)單語(yǔ)音聊天的示例代碼

 更新時(shí)間:2020年07月24日 09:45:14   作者:加菲貓的狗  
這篇文章主要介紹了小程序?qū)崿F(xiàn)簡(jiǎn)單語(yǔ)音聊天的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

框架相關(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

万全县| 沙坪坝区| 庆安县| 昌江| 凤山市| 凤庆县| 富蕴县| 肥城市| 新绛县| 伊川县| 巴里| 枞阳县| 隆德县| 江源县| 双辽市| 东海县| 安泽县| 若羌县| 武鸣县| 托里县| 安陆市| 利川市| 新邵县| 平南县| 那坡县| 巴里| 武邑县| 灵丘县| 黔西县| 田林县| 满洲里市| 都江堰市| 德阳市| 星座| 泾阳县| 即墨市| 芜湖市| 河东区| 新郑市| 读书| 麟游县|