/SkyRTC

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

Primary LanguageJavaScriptMIT LicenseMIT

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