小程序实现简单语音聊天的示例代码


Posted in Javascript onJuly 24, 2020

框架相关

Demo采用Mpvue框架,后端的WebSocket采用Node.js,文件服务器直接使用的微信小程序的云开发的存储。

储备知识

  • 微信小程序录音控制器:recorderManager。
  • 微信小程序音频控制器:innerAudioContext。
  • 微信小程序WebSocket。

Node.js端WebScoket实现

// 基于WS插件
 
// 引入ws插件
var WebSocketServer = require("ws").Server;
// 实例化WebSocket
var wss = new WebSocketServer({ port: 9090 });
// 初始化客户端数组
var clients = [];
 
// 建立链接监听
wss.on('connection', function (ws) {
 clients.push(ws);
 ws.on("message", function (message) {
  clients.forEach(function (ws1) {
   if (ws1 !== ws) {
    ws1.send(message)
   }
  })
 })
})
 
// 建立链接关闭监听
ws.on("close", function (message) {
 clients = clients.filter(function (ws1) {
  return ws1 !== ws
 })
})

小程序端实现

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 {
   // 存储聊天记录
   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();
  // 监听录音开始
  this.recorderManager.onStart(res => {
   console.log("recordStart");
  });
  // 监听录音结束
  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消息监听 
  wx.onSocketMessage(data => {
   console.log(data);
   this.chatContent.push(data.data);
  });
 }
};

结论

  • 主要通过WebSocket完成实时通讯
  • 通过微信小程序提供的API完成语音的录入和输出
  • 通过文件服务器上传语音文件

到此这篇关于小程序实现简单语音聊天的示例代码的文章就介绍到这了,更多相关小程序 语音聊天内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS+CSS模拟可以无刷新显示内容的留言板实例
Mar 03 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
Dec 03 Javascript
JavaScript数组去重的几种方法效率测试
Oct 23 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
利用JQuery实现datatables插件的增加和删除行功能
Jan 06 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
微信小程序 如何保持登录状态
Aug 16 Javascript
vue(2.x,3.0)配置跨域代理
Nov 27 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 Javascript
javascript前端和后台进行数据交互方法示例
Aug 07 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
Jul 24 #Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
Jul 24 #Javascript
javascript实现支付宝滑块验证码效果
Jul 24 #Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
Jul 24 #Javascript
如何通过vscode运行调试javascript代码
Jul 24 #Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 #Javascript
js实现验证码功能
Jul 24 #Javascript
You might like
超级简单的发送邮件程序
2006/10/09 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
JavaScript面向对象精要(下部)
2017/09/12 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
python re模块和正则表达式
2021/03/24 Python
个人培训自我鉴定
2014/03/28 职场文书
公司合作协议书范本
2014/04/18 职场文书
社区活动总结报告
2014/05/05 职场文书
父亲节寄语大全
2015/02/27 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
python数字图像处理:图像简单滤波
2022/06/28 Python