>웹 프론트엔드 >프런트엔드 Q&A >노드에서 음성 채팅을 구현하는 방법

노드에서 음성 채팅을 구현하는 방법

藏色散人
藏色散人원래의
2023-01-28 16:17:022587검색

노드에서 음성 채팅을 구현하는 방법: 1. nodejs 모듈 익스프레스를 사용하여 웹 서버를 만듭니다. 2. https 연결을 만듭니다. 3. "socket.io"를 통해 클라이언트와 서버 간의 실시간 통신을 수행합니다.

노드에서 음성 채팅을 구현하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, node-v16.18.0 버전, DELL G3 컴퓨터

노드는 어떻게 음성 채팅을 구현하나요?

nodejs 기반 음성 채팅

노드에서 음성 채팅을 구현하는 방법

Description

이 프로그램은 iamshaunjp의 그룹 채팅 기능을 기반으로 webRTC 기술을 사용하며 다른 사람이 키보드를 쳤을 때 음성 그룹 채팅 기능을 추가합니다. , 상대방이 입력하는 위치에 WeChat과 유사한 메시지가 나타납니다.

사용된 nodejs 모듈

  • express: 웹 서버 만들기 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: https 연결 만들기(LAN 또는 외부 webRTC에는 https 연결이 필요합니다. 자세한 내용은 tutoril

)socket.io: 클라이언트와 서버 간의 실시간 통신

js 파일

  • chat.js : 버튼 이벤트 등록, 문자 데이터 전송 등을 구현합니다.
    record.js: 음성 메시지 녹음, 재생, 전송 등을 구현합니다.
구조 다이어그램 및 흐름도
여기에 그림 설명 삽입 🎜🎜여기에 이미지 설명 삽입🎜🎜🎜텍스트 통신🎜🎜🎜자세한 내용은 public/js/chat.jsAnnotation🎜🎜🎜🎜Send data🎜🎜🎜🎜페이지를 입력하세요. 서버 소켓연결과 통신합니다. 🎜🎜클라이언트가 텍스트 데이터를 입력합니다🎜🎜고객이 전송 버튼을 클릭하고 클릭 이벤트를 트리거하고 생성합니다. 서버emit🎜🎜soket를 준비하기 위한 chat 이벤트 연결은 서버에 채팅 이벤트와 클라이언트에서 생성된 데이터를 보냅니다🎜🎜 🎜🎜데이터 수신🎜🎜🎜🎜소켓서버로 수신 및 전송 들어오는 데이터와 서버에서 보낸 채팅 이벤트🎜🎜데이터 추출 text🎜🎜js는 인덱스에 텍스트 데이터를 추가합니다. .html, 데이터 수신 및 표시 완료🎜🎜🎜🎜 음성 통신🎜🎜🎜자세한 내용은 public/js/record.js 댓글을 참조하세요🎜 🎜🎜🎜음성 데이터를 받아 보내는 것은 문자 데이터 통신과 유사합니다🎜🎜webRTC를 사용하여 획득 사용자의 비디오 또는 오디오를 blob 형식의 데이터로 변환하여 서버로 전송합니다. . 🎜🎜메시지 수신 시 데이터 유형은 blob 형식입니다. blob 데이터는 html5🎜🎜🎜🎜 서버는 데이터를 전달합니다🎜🎜클라이언트는 서버에 데이터를 보내고, 서버는 chat 이벤트를 발생시켜 클라이언트가 보낸 데이터를 브로드캐스트 형태로 각 클라이언트에게 보내서 채팅을 완료합니다. 그룹 채팅 기능. 🎜🎜🎜🎜https 인증서 만들기🎜🎜localhost에서 webRTC를 사용하는 경우에는 https를 사용할 필요가 없지만, LAN이나 외부 네트워크에서 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>');
    });
가 학습을 권장합니다: "🎜node.js 비디오 튜토리얼🎜" 🎜

위 내용은 노드에서 음성 채팅을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.