WebRTC 实现P2P音视频通话——搭建信令服务器

本文介绍了如何使用Node.js和Socket.IO在公网服务器上搭建一个简单的聊天室,作为WebRTC P2P音视频通话的信令服务器。详细步骤包括安装NodeJS和npm,设置服务器端和客户端的实现,以及解决遇到的socket.io版本问题。
摘要由CSDN通过智能技术生成

前言

WebRTC 实现P2P音视频通话系列记录了从零->搭建信令服务器->搭建stun/turn P2P穿透和转发服务器->WebRTC P2P音视频通话,

WebRTC 实现P2P音视频通话——搭建信令服务器 本文将在公网服务器主机上使用node.js搭建一个简单的聊天室

1、安装NodeJS,npm

通过SSH进入服务器主机

ssh 用户名@IP地址 例如:ssh root@192.168.1.1

通过apt 搜索一下nodejs相关信息

apt search nodejs

通过apt进行安装(也可以通过源码进行编译安装,源码地址:Node.js 中文网)

apt install nodejs

安装完成,查看nodejs版本

nodejs --version

2、服务器端实现

2.1引入库

通过npm安装接下来需要的第三库 //serve-index 将文件夹中文件列表显示到浏览器中

npm install serve-index 

//express 目前最流行的基于Node.js的Web开发框架

npm install express

//socket.io 网络通信开发框架

npm install socket.io

👇socket.io安装失败,需要更新nodejs,npm版本 (更新前nodejs版本为4.2.6,npm版本为3.5.2)

更新nodejs到最新版本

npm install -g n
n stable

更新后的nodejs在/usr/local/bin/node路径下需要通过MV指令移到/usr/bin/node路径下,替换原有的nodejs

mv /usr/local/bin/node /usr/bin/node

更新npm

curl -qL https://www.npmjs.com/install.sh | sh

更新完后执行

npm install socket.io

2.2代码实现

新建webserver目录并进入

mkdir webserver

在webserver目录下新建server.js

vi server.js

server.js文件中实现信令服务代码👇

'use strict'
//导入需要使用的相关库
var http  = require('http');
var https = require('https');
var fs    = require('fs');
//serve-index
var serveIndex = require('serve-index');
//express
var express = require('express');
//socket.is
var socketIo = require('socket.io');
//控制房间内用户个数
var USERCOUNT = 3;
​
var app = express();
//顺序不能换
app.use(serveIndex('./public'));
app.use(express.static('./public'));
​
//加载本地路径下的ssl证书,专用于https, 没相关的域名以及证书,https将无法访问,有证书在webserver路径下新建cert目录,将证书拷入
var options = {
    key  : fs.readFileSync('./cert/XXXXXXXX.cn.key'),
    cert : fs.readFileSync('./cert/XXXXXXXX.cn_bundle.pem')
}
​
//https_server 有证书就直接拷贝到cert路径下,在填入options中,没有就填null,https服务将无法访问
var https_server = https.createServer(null, app);
//http_server
var http_server = http.createServer(app);
​
//bind socket.io with https_server
var io = socketIo.listen(https_server);
var sockio = socketIo.listen(http_server);
​
//connection
io.sockets.on('connection', (socket)=>{
​
    socket.on('message', (room, data)=>{
        socket.to(room).emit('message', room, data)//房间内所有人,除自己外,转发消息
    });
    socket.on('join', (room)=> {
​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值