Giter Club home page Giter Club logo

skyrtc's Introduction

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

skyrtc's People

Contributors

lingyucoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skyrtc's Issues

remote video 是黑的

hi Lingyu.

我把代码部署到服务器上,打开页面我能看到自己的视频,但是有别人进到房间的时候,这个remote video是黑的,,偶尔的刷新能正常显示,但是大部分都是黑屏。。请问这个是什么问题呢。

请问你里面的一堆this.emit具体起到什么作用了呢?

有点弄不懂里面的this.emit是什么作用,比如this.emit('new_peer', socket, room);这个是干什么用的呢?向所有用户发送信息吗?还有客户端里面的很多that.emit事件都找不到绑定相应事件的on函数,到底那些事件是什么时候被绑定上的呢?

视频显示问题

你好,我用局域网测试没问题,但是用公网却显示不出对方。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.