skyrtc

A server-side webRTC lib to build real-time communications in browser

Usage no npm install needed!

<script type="module">
  import skyrtc from 'https://cdn.skypack.dev/skyrtc';
</script>

README

SkyRTC

简介

一个Node.js编写的WebRTC服务器端库,为服务器端库,需要配合客户端库SkyRTC-client共同使用,用于搭建基于WebRTC和WebSocket技术的在线音频、视频聊天室

SkyRTC前端库SkyRTC-client

SkyRTC-client

简单示例

NPM安装

执行如下命令从npm进行安装:

$ npm install skyrtc

监听服务器

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var SkyRTC = require('skyrtc').listen(server);
var port = process.env.PORT || 3000;
server.listen(port);

监听WebRTC事件

SkyRTC继承自EventEmitter, 可以通过如下语法监听事件:

SkyRTC.rtc.on('eventName', function(params) {
  //...
});

内置事件

  • new_connect
  • new_peer
  • remove_peer
  • socket_message
  • ice_candidate
  • offer
  • answer

new_connect

新用户与服务器建立WebSocket连接时触发

参数:

  • socket——新建立的WebSocket连接实例

new_peer

用户加入房间后触发

参数:

  • socket——用户使用的WebSocket连接实例
  • room——房间名称

remove_peer

用户关闭连接后触发

参数:

  • socket——用户使用的WebSocket连接实例

socket_message

客户端向服务器端发送消息,且非自定义事件格式时触发

参数:

  • socket——用户使用的WebSocket连接实例
  • msg——发送的消息内容

ice_candidate

接收到ice candidate信令时触发

参数:

  • socket——用户使用的WebSocket连接实例
  • candidate——ice candidate信令数据

offer

接收到offer信令时触发

参数:

  • socket——用户使用的WebSocket连接实例
  • offer——offer信令数据

answer

接收到answer信令时触发

参数:

  • socket——用户使用的WebSocket连接实例
  • answer——answer信令数据

接口

  • getRooms
  • broadcastInRoom
  • broadcast
  • getSocket
  • on

getRooms

用户获取当前服务器上所有房间信息

参数: 无

返回值:

  • rooms——所有房间名称的数组

getSocket

通过socket的id获得socket实例

参数:

  • id——socket的id

返回值:

  • socket——WebSocket实例

broadcastInRoom

在房间中广播消息

参数:

  • room——被广播消息的房间名称
  • data——消息的具体内容
  • errorCb——广播失败时的回调函数

返回值: 无

broadcast

向服务器上的所有用户广播消息

参数:

  • data——消息的具体内容
  • errorCb——广播失败时的回调函数

返回值: 无

on

向服务器上的事件绑定处理器

参数:

  • eventName——被绑定的事件名称
  • callback——被绑定的事件触发时的回调函数

返回值: 无

自定义事件

在SkyRTC中可以自定义事件,在前端页面使用WebSocket发送信息时,以如下JSON格式发送信息:

{
    "eventName": "yourOwnEventName",
    "data": {
        //自定义事件数据
    }
}

在后台通过监听同名事件来进行处理:

SkyRTC.rtc.on("yourOwnEventName", function(data){
    //data将是前台所传输的数据
});

自定义事件请不要与上述SkyRTC原生事件重名

项目完整实例

SkyRTC-demo