欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

相關(guān)文章

  • JavaScript 七大技巧(二)

    JavaScript 七大技巧(二)

    我寫JavaScript代碼已經(jīng)很久了,都記不起是什么年代開始的了。本文給大家分享javascript七大技巧(二),對(duì)javascript技巧相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • 淺析JavaScript中var that=this

    淺析JavaScript中var that=this

    this是Javascript語言的一個(gè)關(guān)鍵字。它代表函數(shù)運(yùn)行時(shí),自動(dòng)生成的一個(gè)內(nèi)部對(duì)象,只能在函數(shù)內(nèi)部使用。接下來通過本文給大家分享JavaScript中var that=this所代表的意思,需要的朋友參考下吧
    2017-02-02
  • JavaScript中幾種時(shí)間格式之間的簡單轉(zhuǎ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-01
  • createObjectURL方法實(shí)現(xiàn)本地圖片預(yù)覽

    createObjectURL方法實(shí)現(xiàn)本地圖片預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了createObjectURL方法實(shí)現(xiàn)本地圖片預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 微信小程序 JS動(dòng)態(tài)修改樣式的實(shí)現(xiàn)方法

    微信小程序 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-12
  • require簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)

    require簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)

    下面小編就為大家?guī)硪黄猺equire簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • Javascript Request獲取請(qǐng)求參數(shù)如何實(shí)現(xiàn)

    Javascript Request獲取請(qǐng)求參數(shù)如何實(shí)現(xiàn)

    使用Javascript Request獲取參數(shù)的時(shí)候總是提示出錯(cuò),本文為此問題提供詳細(xì)的解決方案,需要了解的朋友可以參考下
    2012-11-11
  • 擴(kuò)展Bootstrap Tooltip插件使其可交互的方法

    擴(kuò)展Bootstrap Tooltip插件使其可交互的方法

    這篇文章主要介紹了擴(kuò)展Bootstrap Tooltip插件使其可交互的方法,結(jié)合實(shí)例形式分析了bootstrap擴(kuò)展tooltip插件的原理與具體操作技巧,需要的朋友可以參考下
    2016-11-11
  • javascript中一些奇葩的日期換算方法總結(jié)

    javascript中一些奇葩的日期換算方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于javascript中的一些奇葩的日期換算方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 全面解析Bootstrap中tooltip、popover的使用方法

    全面解析Bootstrap中tooltip、popover的使用方法

    這篇文章主要為大家詳細(xì)解析了Bootstrap中tooltip、popover的使用方法,了解提示框、彈出框的實(shí)現(xiàn)原理,感興趣的朋友可以參考一下
    2016-06-06

最新評(píng)論