前言
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)=> {
socket.join(room);//先加入房间,后面在进行判断,加入房间或者踢出房间
var myRoom = io.sockets.adapter.rooms[room];
var users = Object.keys(myRoom.sockets).length;
//在这里可以控制进入房间的人数,现在一个房间最多 2个人
//为了便于客户端控制,如果是多人的话,应该将目前房间里
//人的个数当做数据下发下去。

本文介绍了如何使用Node.js和Socket.IO在公网服务器上搭建一个简单的聊天室,作为WebRTC P2P音视频通话的信令服务器。详细步骤包括安装NodeJS和npm,设置服务器端和客户端的实现,以及解决遇到的socket.io版本问题。
最低0.47元/天 解锁文章
3321

被折叠的 条评论
为什么被折叠?



