노드에서 음성 채팅을 구현하는 방법
노드에서 음성 채팅을 구현하는 방법: 1. nodejs 모듈 익스프레스를 사용하여 웹 서버를 만듭니다. 2. https 연결을 만듭니다. 3. "socket.io"를 통해 클라이언트와 서버 간의 실시간 통신을 수행합니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, node-v16.18.0 버전, DELL G3 컴퓨터
노드는 어떻게 음성 채팅을 구현하나요?
nodejs 기반 음성 채팅
Description
이 프로그램은 iamshaunjp의 그룹 채팅 기능을 기반으로 webRTC 기술을 사용하며 다른 사람이 키보드를 쳤을 때 음성 그룹 채팅 기능을 추가합니다. , 상대방이 입력하는 위치에 WeChat과 유사한 메시지가 나타납니다.
- 데모: https://www.php.cn/link/b2fc614266ad3627dca4dc5d37885d58
- 소스 코드: https://www.php.cn/link/12a8193db4825679dc9baf49305efe92
사용된 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
: 클라이언트와 서버 간의 실시간 통신
-
chat.js
: 버튼 이벤트 등록, 문자 데이터 전송 등을 구현합니다.
record.js
: 음성 메시지 녹음, 재생, 전송 등을 구현합니다. 

public/js/chat.js
Annotation🎜🎜🎜🎜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
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 id="Hello-Secure-World">Hello, Secure World!</h1>'); });
위 내용은 노드에서 음성 채팅을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











nvm을 사용하여 노드를 삭제하는 방법: 1. "nvm-setup.zip"을 다운로드하여 C 드라이브에 설치합니다. 2. "nvm -v" 명령을 통해 환경 변수를 구성하고 버전 번호를 확인합니다. install" 명령 노드 설치; 4. "nvm uninstall" 명령을 통해 설치된 노드를 삭제합니다.

파일 업로드를 처리하는 방법은 무엇입니까? 다음 글에서는 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

이 기간 동안 저는 Tencent 문서의 모든 카테고리에 공통되는 HTML 동적 서비스를 개발 중입니다. 다양한 카테고리에 대한 액세스 생성 및 배포를 촉진하고 클라우드로 이동하는 추세에 부응하기 위해. Docker를 사용하여 서비스 콘텐츠를 수정하고 제품 버전을 균일하게 관리합니다. 이 글에서는 제가 Docker를 서비스하면서 쌓은 최적화 경험을 여러분의 참고용으로 공유하겠습니다.

이 기사에서는 Node의 프로세스 관리 도구인 "pm2"를 공유하고 pm2가 필요한 이유, pm2 설치 및 사용 방법에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다!

Pinetwork 노드에 대한 자세한 설명 및 설치 안내서이 기사에서는 Pinetwork Ecosystem을 자세히 소개합니다. Pi 노드, Pinetwork 생태계의 주요 역할을 수행하고 설치 및 구성을위한 전체 단계를 제공합니다. Pinetwork 블록 체인 테스트 네트워크가 출시 된 후, PI 노드는 다가오는 주요 네트워크 릴리스를 준비하여 테스트에 적극적으로 참여하는 많은 개척자들의 중요한 부분이되었습니다. 아직 Pinetwork를 모른다면 Picoin이 무엇인지 참조하십시오. 리스팅 가격은 얼마입니까? PI 사용, 광업 및 보안 분석. Pinetwork 란 무엇입니까? Pinetwork 프로젝트는 2019 년에 시작되었으며 독점적 인 Cryptocurrency Pi Coin을 소유하고 있습니다. 이 프로젝트는 모든 사람이 참여할 수있는 사람을 만드는 것을 목표로합니다.

nodejs 실행 파일을 pkg로 패키징하는 방법은 무엇입니까? 다음 기사에서는 pkg를 사용하여 Node 프로젝트를 실행 파일로 패키징하는 방법을 소개합니다. 도움이 되기를 바랍니다.

인증은 모든 웹 애플리케이션에서 가장 중요한 부분 중 하나입니다. 이 튜토리얼에서는 토큰 기반 인증 시스템과 기존 로그인 시스템과의 차이점에 대해 설명합니다. 이 튜토리얼이 끝나면 Angular와 Node.js로 작성된 완벽하게 작동하는 데모를 볼 수 있습니다. 기존 인증 시스템 토큰 기반 인증 시스템으로 넘어가기 전에 기존 인증 시스템을 살펴보겠습니다. 사용자는 로그인 양식에 사용자 이름과 비밀번호를 입력하고 로그인을 클릭합니다. 요청한 후 데이터베이스를 쿼리하여 백엔드에서 사용자를 인증합니다. 요청이 유효하면 데이터베이스에서 얻은 사용자 정보를 이용하여 세션을 생성하고, 세션 정보를 응답 헤더에 반환하여 브라우저에 세션 ID를 저장한다. 다음과 같은 애플리케이션에 대한 액세스를 제공합니다.

IDEA에서 노드를 실행하는 방법은 무엇입니까? 다음 글에서는 IDEA에서 node.js를 구성, 설치, 실행하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!
