基于nodejs的语音聊天
描述
程序在 iamshaunjp 的群聊功能基础上利用webRTC技术,添加了语音群聊功能,在其他人键盘输入时,会出现类似微信的对方正在输入字样。
- demo:https://biptedu.cn:4000/
- source code: https://github.com/sunlanchang/voice_chat
使用的nodejs模块
express
:创建一个web服务器https
:创建https连接(局域网或者外网webRTC需要https连接,具体见tutoril)socket.io
:客户端与服务端实时通信
js文件
chat.js
:实现按钮事件的注册、文本数据的发送等record.js
:实现语音消息的录取、播放、发送等
结构图和流程图
文本通信
详情见public/js/chat.js
注释
发送数据
- 进入页面进行与服务器的
socket
连接 - 客户端输入文本数据
- 客户点击
sent
按钮,触发click
事件,并产生chat
事件准备想服务器emit
soket
连接发送给服务器chat事件和客户端产生的数据
接收数据
socket
接受到服务器发送来的data和服务器发送来的chat事件- 提取data文本
- js在
index.html
添加文本数据,完成接收数据并显示
语音通信
详情见public/js/record.js
注释
- 接受和发送语音数据类似与文本数据的通信
- 利用
webRTC
获取到用户的视频或者音频转换为blob
格式数据,并发送给服务器数据。 - 接受消息时,数据类型是
blob
格式,对blob
数据解析,利用html5的audio标签进行播放
服务器转发数据
客户端发送给服务器数据,服务器触发chat
事件,将客户端发送来的数据以广播的形式发送到每一个客户端,完成群聊的功能。
创建https证书
在localhost中使用webRTC不需要使用https,但是在局域网或者外网使用webRTC,必须强制使用webRTC,这里采用自己生成证书供测试使用,具体生成方法和设置https方法参考博客:
- 生成自己签名的证书(有效期365天)
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
- 使用https连接的express,例子如下:
var fs = require('fs'),https = require('https'),express = require('express'),app = express();https.createServer({key: fs.readFileSync('key.pem'),cert: fs.readFileSync('cert.pem')}, app).listen(55555);app.get('/', function (req, res) {res.header('Content-type', 'text/html');return res.end('<h1>Hello, Secure World!</h1>');});
基于nodejs的语音聊天相关推荐
- 基于Internet的语音聊天软件设计与实现
基于Internet的语音聊天软件设计与实现 朱国华,夏敏捷 (中原工学院 计算机科学系 ,河南 郑州 450007) 摘要:文章对网络环境下语音通信的原理进行了系统地分析,详细阐述了语音的采集.语音 ...
- 基于C#局域网语音聊天
基于C#局域网语音聊天室,可实现文本消息的发送.接收及语音聊天,是一个很不错的,适合初学者的软件开发 ...
- 基于nodejs的网络聊天室实现
一.实验选题 1.1选题背景及意义 本次课程设计选题为 :仿QQWeb即时聊天系统. 由于WEB的易用性.实用性,它很快占据了主导地位,目前成为使用最广泛.最有前途.最具魅力的信息传播技术.本次实验就 ...
- node php聊天室,利用socket.io实现多人聊天室(基于Nodejs)
利用socket.io实现多人聊天室(基于Nodejs) socket.io简介 在Html5中存在着这样的一个新特性,引入了websocket,关于websocket的内部实现原理可以看这篇文章,这 ...
- 基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人
基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人 程序简介 代码一共分为以下几个模块 伪代码形式为 部分代码 源代码下载地址 程序简介 程序界面包含录音和发送两个按钮 点录音将开始 ...
- Java基于TCP(Socket)协议的网络语音聊天
Java基于TCP协议的网络语音聊天 本聊天是基于tcp协议进行的,其本质为:本地录音->将录音通过网络编程转发给他人->他人进行录音的播放. 所需知识:多线程,基于tcp协议的网络编程 ...
- 基于Python+百度语音的智能语音ChatGPT聊天机器人(机器学习+深度学习+语义识别)含全部工程源码 适合个人二次开发
目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 Pycharm 环境 ChatterBot 环境 模块实现 1. 模型构建 2. 服务器端 3. 客户端 4. 语音录入 ...
- chatbot:基于 AIML 的 PHP 聊天机器人
基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库,可以用来学习.代码可以从https://github.com/k ...
- 抓住语音社交风口,1天快速搭建语音聊天室
语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...
最新文章
- 牛客华为机试第2题python
- RS485通信简单介绍
- Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常
- 机器学习知识点(十六)集成学习AdaBoost算法Java实现
- linux 查看文件夹大小 du命令
- 2017网易有道内推编程题
- C#/.Net Core/WPF框架初建(国际化、主题色)
- 我的内核学习笔记5:proc目录文件创建及读写
- java 线程栈大小配置,JVM运行时数据区详解-Stack栈(优化配置、代码样例)
- MyBatis理解与掌握(输入与输出)
- JQuery筛选器全系列介绍
- Python入门--特殊方法
- 分享我用cnode社区api做微信小应用的入门过程
- logisim软件简单入门使用
- 系统架构变迁——个人成长路线
- ajax实现留言板功能 -
- 天猫精灵对接智能设备
- Calendar类、System类、StringBuilder类、包装类
- 面试-vue组件间通信
- eda多功能数字钟课程设计_《多功能数字钟》EDA实验报告