GithubHelp home page GithubHelp logo

node-webrtc / node-webrtc Goto Github PK

View Code? Open in Web Editor NEW
2.7K 102.0 456.0 14.43 MB

node-webrtc is a Node.js Native Addon that provides bindings to WebRTC M87

License: Other

JavaScript 25.32% C++ 64.05% Batchfile 0.66% CMake 7.15% Shell 0.21% C 2.61%
node webrtc bindings native-addon n-api

node-webrtc's Introduction

    

NPM macOS/Linux Build Status Windows Build status

node-webrtc is a Node.js Native Addon that provides bindings to WebRTC M87. This project aims for spec-compliance and is tested using the W3C's web-platform-tests project. A number of nonstandard APIs for testing are also included.

Install

npm install wrtc

Installing from NPM downloads a prebuilt binary for your operating system × architecture. Set the TARGET_ARCH environment variable to "arm" or "arm64" to download for armv7l or arm64, respectively. Linux and macOS users can also set the DEBUG environment variable to download debug builds.

You can also build from source.

Supported Platforms

The following platforms are confirmed to work with node-webrtc and have prebuilt binaries available. Since node-webrtc targets N-API version 3, there may be additional platforms supported that are not listed here. If your platform is not supported, you may still be able to build from source.

Linux macOS Windows
armv7l arm64 x64 x64 x64
Node 8
10
11
12
13
14
Electron 4
5

Examples

See node-webrtc/node-webrtc-examples.

Contributing

Contributions welcome! Please refer to the wiki.

node-webrtc's People

Contributors

caseywebdev avatar charlesra avatar d1plo1d avatar damonoehlman avatar davidburhans avatar dreaded-gnu avatar ekr avatar guymguym avatar helloiampau avatar iryanbell avatar janza avatar jonathanfrawley avatar kkoopa avatar kofd avatar manuguerra avatar manur avatar markandrus avatar murat-dogan avatar nazar-pc avatar njohnst avatar oklas avatar olalonde avatar paul-maxime avatar piranna avatar rosskukulinski avatar sebas642 avatar sparkpunkd avatar taylorhoward92 avatar williamberman avatar wouldgo 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  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

node-webrtc's Issues

Make file hierarchy Node compliant

Current file hierarchy is strange and doesn't follow Node.js and NPM conventiins. I propose:

  • Move libwebrtc to third_party/
  • Move *.js files to lib/
  • Add library dependencies to makefile
  • Add browser support using native classes, and set there browser checking

onicecandidate handling

While it's not obvious from reading the spec (well not that I can see) a defacto standard behaviour that has been implemented when working with RTCPeerConnection objects is demonstrated by the following code snippet:

pc.onicecandidate = function(evt) {
  if (evt.candidate) {
    // new candidate, add to the list of candidates found or transmit...
  }
  else {
    // end of candidates gathering, transmit gathered candidates
  }
};

From what I can tell the peerconnection.cc code only passes through the event while it believes the ice gathering state is not complete and a candidate has been provided. While I agree this is logically correct, suppressing the event when no candidate is detected might cause issues in existing webrtc libraries or code.

gclient_config is not part of depot_tools

I think you need to use gclient config <stuff> as gclient_config is not distributed with a new depot_tools checkout.

[burg@burg183 node-webrtc]# npm install

> [email protected] install /Users/burg/repos/node-webrtc
> node build.js

gclient_config
.
gclient_config failed: 127 null

npm install failing with gclient_sync failed: 1 null

When I run npm install, it does all of the dep downloads and then the following is output:

[email protected] install /Users/matt/work/nextgen/studioGit/mp-studio/node_modules/wrtc
node bin/build.js

depot_tools
.
depot_tools complete
gclient_config
.
gclient_config complete
gclient_sync
.............................................................................................................................................................................................................................................................................................................................................................
gclient_sync failed: 1 null
[email protected] node_modules/wrtc
├── [email protected]
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
$

I've tried uninstalling and installing again but still same output. Any idea why this is happening?

Thanks.

Reduce library deps to minimal set

Right now we pull in a lot of stuff, much of which may not be used at all. Might be better to figure out which object files are needed and build a single static library to link against?

distribute binary modules for common platforms/architectures

It should be straightforward to distribute pre-built binaries through NPM, as fibers already does.

Here's what I think needs to happen:

  • Based on platform (windows, mac, linux), architecture (x86, x64, arm, etc), v8 version, see if a binary package exists
  • If there's a binary package, download it and put webrtc.node in the right place
  • If there's not a binary package, go through the build process
  • Store binary packages on the gh-pages for this project, probably a single directory with package names matching {platform}-{arch}-{v8}-webrtc.node (or something like that)
  • node-webrtc should be tagged each time binaries are built so that matching source code can be found

`npm install` always fails with "gclient_runhooks failed: 2 null"

I have tried installing the wrtc package as well as from the develop branch source unsuccessfully. Building always fails with the following error:

~/git/node-webrtc$ npm install

> [email protected] install /home/admin/git/node-webrtc
> node build.js

gclient_config
.
gclient_config complete
gclient_sync
....
gclient_sync complete
gclient_runhooks
........
gclient_runhooks failed: 2 null

DataChannel on Linux don't work correctly

On Chrome 29 (started with proper parameters for datachannel turn on, what you write in README):

[27:27:1018/011325:ERROR:rtc_data_channel_handler.cc(63)] WebRTCDataChannelHandlerClient not set.

And guys, building in linux was not clear :) You're commented linking with openssl and i have to remove # on it to start testing.

Implement close()

PeerConnection.Close() should work. Closing should shut down the async loops and allow the program to finish.

Things that need cleaning up:

  • uv_loop_t for PeerConnection and DataChannels
    • What should happen to active DataChannels when the PeerConnection is closed?
  • PeerConnection::_signalThread
  • PeerConnection::_workerThread
  • Make sure C++ objects are cleaned up when JS proxies undergo GC

Running test.js after building complains about missing symbols

Hi,
I planned to use your module inside my project (just for referece https://github.com/wouldgo/hubba).
After a successful building phase, as you suggest, I ran the test.js as sanity check and I got this error:

node node_modules/wrtc/examples/test.js 

/home/dario/git/hubba/node_modules/wrtc/node_modules/bindings/bindings.js:83
        throw e
              ^
Error: /home/dario/git/hubba/node_modules/wrtc/build/Release/webrtc.node: 
undefined symbol: CERT_CertificateTemplate
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at bindings (/home/dario/git/hubba/node_modules/wrtc/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/home/dario/git/hubba/node_modules/wrtc/lib/peerconnection.js:1:96)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

I looked for a reference to the c++ lib that defines the missing symbol (maybe I'm wrong but it seems a linker issue) and I didn't find anything.

Do you have any suggestion to resolve this issue?

Thanks.
Best Regards,

Dario.

Install on mac appears to fail

With this message:

OS X 10.9. Node 0.10.22

Tape tests help

Hi again,

I forked this repository yesterday to rewrite the building/cleaning scripts and to introduce grunt in the development (as reported in issue #56).

The building script seems good but, when I introduced tape in the default task, it complains for 5/6 failures (I don't understand why sometimes 5 and sometimes 6).
I can't really understand where they came out from (probably I'm too fool for tape testing suite).

Since my aim is a pull request for these functionalities, but some tests are failed, could you please help me to understand the meaning of this output?
grunt-with-tape
This is the Gruntfile.js (the funny thing is that grunt wrote down "Done, without erorrs" 🍰 ).

Thanks,
Dario.

Use Grunt?

If we start to add tasks like browserify to the toolchain as talked on issue #51, maybe we could start to use a task manager like Grunt or similar instead of custom-made scripts.

Bidirectional message sending

Handle DataChannel::Send( const Arguments& args ) {
TRACE_CALL;
HandleScope scope;

DataChannel* self = ObjectWrap::Unwrap( args.This() );

TRACE_END;
return scope.Close(Undefined());
}

Add some code pls. :)

Make sure allocated memory is properly freed

I avoided dealing with this so that I could get things working quickly. There are a bunch of places where memory is allocated but not freed.

Also need to make sure that memory for C++ objects is freed when the corresponding JS objects are cleaned up.

NPM module should build correctly

NPM automatically runs the gyp file in the top-level project directory:

If you have a file with a .gyp extension in the root of your package, then npm
will run the appropriate node-gyp commands automatically at install time.

As a first step, maybe it's best to just check all the external dependencies into the repository and not worry about gclient at all. For linux and darwin, that should mean that only the compile step is needed. Not sure how to support the build process on Windows.

any plan on webrtc proxy?

i want to broadcast the media stream to many others people, it need to multiplexe mediaStream, so does this project have this plan?

JS API should generate standards-compliant event objects

Right now the JS API passes webrtc objects (data channels, status codes) without wrapping them in an event object. This is not strictly comliant with the standard and will prevent webrtc libraries written for the browser from running on node-webrtc.

`npm install` and `npm test` fails with `Symbol not found` error.

Howdy,

I'm currently on OSX Mavericks and I get the following error after building the node-webrtc library with npm install and running npm test:

jessie@Jessies-MacBook-Pro:~/jive/node-webrtc$ npm test

> [email protected] test /Users/jessie/jive/node-webrtc
> node examples/test.js


/Users/jessie/jive/node-webrtc/node_modules/bindings/bindings.js:83
        throw e
              ^
Error: dlopen(/Users/jessie/jive/node-webrtc/build/Release/webrtc.node, 1): Symbol not found: __ZN6webrtc25MediaConstraintsInterface10kValueTrueE
  Referenced from: /Users/jessie/jive/node-webrtc/build/Release/webrtc.node
  Expected in: dynamic lookup

    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at bindings (/Users/jessie/jive/node-webrtc/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/Users/jessie/jive/node-webrtc/lib/peerconnection.js:1:96)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

I've tried searching around for this error or any clues to its meaning but have come up with nothing useful so far.

Any ideas as to what is causing this and how I can either:

  1. Fix it
  2. Work around it

Consider Implementing Testing using Tape

Hey Alan,

Love what you are doing here. I hope that you, with assistance from @helloIAmPau and others can turn this into an awesome WebRTC binding for node. We definitely need one.

I'd be happy to pitch in with development as well (doing a lot of stuff with WebRTC over at https://github.com/rtc-io - keeping a low profile at the moment but I think we've got some good stuff in the mix).

Anyway, one of the things I'd recommend very early on is considering using tape for testing. In combination with testling it's a great way to do testing between node and browser environments.

If you'd be open to going this way, then I'd be happy to take on implementation of a pretty solid suite of tests using tape straight up.

Cheers,
Damon.

replace deprecated V8 APIs

compiling node-webrtc against the current joyent/node repository fails (e.g. 2013-10-26).

node-webrtc uses V8 APIs that are deprecated. These have been removed in V8 3.21+.

gyp info spawn args [ 'V=1', 'BUILDTYPE=Release', '-C', 'build' ]
  g++ '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DLARGEFILE_SOURCE' '-DWEBRTC_TARGET_PC' '-DWEBRTC_LINUX' '-DWEBRTC_THREAD_RR' '-DEXPAT_RELATIVE_PATH' '-DGTEST_RELATIVE_PATH' '-DJSONCPP_RELATIVE_PATH' '-DWEBRTC_RELATIVE_PATH' '-DPOSIX' '-D__STDC_FORMAT_MACROS' '-DDYNAMIC_ANNOTATIONS_ENABLED=0' '-DBUILDING_NODE_EXTENSION' -I/home/devnullmail/node/src -I/home/devnullmail/node/deps/uv/include -I/home/devnullmail/node/deps/v8/include -I../lib/libwebrtc/trunk -I../lib/libwebrtc/trunk/third_party/webrtc -I../lib/libwebrtc/trunk/third_party/webrtc/system_wrappers/interface -I../lib/libwebrtc/trunk/third_party  -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -Wextra -Wno-unused-local-typedefs -Wno-uninitialized -Wno-unused-variable -Wno-unused-but-set-variable -pipe -fno-ident -fdata-sections -ffunction-sections -fPIC -fpermissive -O3 -ffunction-sections -fdata-sections -fno-tree-vrp -fno-rtti -fno-exceptions -MMD -MF ./Release/.deps/Release/obj.target/webrtc/src/binding.o.d.raw   -c -o Release/obj.target/webrtc/src/binding.o ../src/binding.cc
In file included from ../src/binding.cc:4:0:
../src/peerconnection.h:176:35: error: ‘Arguments’ does not name a type
   static Handle<Value> New( const Arguments& args );
                                   ^
../src/peerconnection.h:176:46: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> New( const Arguments& args );
                                              ^
../src/peerconnection.h:178:43: error: ‘Arguments’ does not name a type
   static Handle<Value> CreateOffer( const Arguments& args );
                                           ^
../src/peerconnection.h:178:54: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> CreateOffer( const Arguments& args );
                                                      ^
../src/peerconnection.h:179:44: error: ‘Arguments’ does not name a type
   static Handle<Value> CreateAnswer( const Arguments& args );
                                            ^
../src/peerconnection.h:179:55: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> CreateAnswer( const Arguments& args );
                                                       ^
../src/peerconnection.h:180:51: error: ‘Arguments’ does not name a type
   static Handle<Value> SetLocalDescription( const Arguments& args );
                                                   ^
../src/peerconnection.h:180:62: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> SetLocalDescription( const Arguments& args );
                                                              ^
../src/peerconnection.h:181:52: error: ‘Arguments’ does not name a type
   static Handle<Value> SetRemoteDescription( const Arguments& args );
                                                    ^
../src/peerconnection.h:181:63: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> SetRemoteDescription( const Arguments& args );
                                                               ^
../src/peerconnection.h:182:41: error: ‘Arguments’ does not name a type
   static Handle<Value> UpdateIce( const Arguments& args );
                                         ^
../src/peerconnection.h:182:52: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> UpdateIce( const Arguments& args );
                                                    ^
../src/peerconnection.h:183:47: error: ‘Arguments’ does not name a type
   static Handle<Value> AddIceCandidate( const Arguments& args );
                                               ^
../src/peerconnection.h:183:58: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> AddIceCandidate( const Arguments& args );
                                                          ^
../src/peerconnection.h:184:37: error: ‘Arguments’ does not name a type
   static Handle<Value> Close( const Arguments& args );
                                     ^
../src/peerconnection.h:184:48: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> Close( const Arguments& args );
                                                ^
../src/peerconnection.h:186:75: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetLocalDescription( Local<String> property, const AccessorInfo& info );
                                                                           ^
../src/peerconnection.h:186:89: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetLocalDescription( Local<String> property, const AccessorInfo& info );
                                                                                         ^
../src/peerconnection.h:187:76: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetRemoteDescription( Local<String> property, const AccessorInfo& info );
                                                                            ^
../src/peerconnection.h:187:90: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetRemoteDescription( Local<String> property, const AccessorInfo& info );
                                                                                          ^
../src/peerconnection.h:188:77: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetIceConnectionState( Local<String> property, const AccessorInfo& info );
                                                                             ^
../src/peerconnection.h:188:91: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetIceConnectionState( Local<String> property, const AccessorInfo& info );
                                                                                           ^
../src/peerconnection.h:189:73: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetSignalingState( Local<String> property, const AccessorInfo& info );
                                                                         ^
../src/peerconnection.h:189:87: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetSignalingState( Local<String> property, const AccessorInfo& info );
                                                                                       ^
../src/peerconnection.h:190:76: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetIceGatheringState( Local<String> property, const AccessorInfo& info );
                                                                            ^
../src/peerconnection.h:190:90: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetIceGatheringState( Local<String> property, const AccessorInfo& info );
                                                                                          ^
../src/peerconnection.h:191:75: error: ‘AccessorInfo’ does not name a type
   static void ReadOnly( Local<String> property, Local<Value> value, const AccessorInfo& info );
                                                                           ^
../src/peerconnection.h:191:89: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static void ReadOnly( Local<String> property, Local<Value> value, const AccessorInfo& info );
                                                                                         ^
In file included from ../src/binding.cc:5:0:
../src/datachannel.h:74:35: error: ‘Arguments’ does not name a type
   static Handle<Value> New( const Arguments& args );
                                   ^
../src/datachannel.h:74:46: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> New( const Arguments& args );
                                              ^
../src/datachannel.h:76:36: error: ‘Arguments’ does not name a type
   static Handle<Value> Send( const Arguments& args );
                                    ^
../src/datachannel.h:76:47: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> Send( const Arguments& args );
                                               ^
../src/datachannel.h:77:37: error: ‘Arguments’ does not name a type
   static Handle<Value> Close( const Arguments& args );
                                     ^
../src/datachannel.h:77:48: warning: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
   static Handle<Value> Close( const Arguments& args );
                                                ^
../src/datachannel.h:79:64: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetLabel( Local<String> property, const AccessorInfo& info );
                                                                ^
../src/datachannel.h:79:78: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetLabel( Local<String> property, const AccessorInfo& info );
                                                                              ^
../src/datachannel.h:80:69: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetBinaryType( Local<String> property, const AccessorInfo& info );
                                                                     ^
../src/datachannel.h:80:83: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetBinaryType( Local<String> property, const AccessorInfo& info );
                                                                                   ^
../src/datachannel.h:81:69: error: ‘AccessorInfo’ does not name a type
   static Handle<Value> GetReadyState( Local<String> property, const AccessorInfo& info );
                                                                     ^
../src/datachannel.h:81:83: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static Handle<Value> GetReadyState( Local<String> property, const AccessorInfo& info );
                                                                                   ^
../src/datachannel.h:82:80: error: ‘AccessorInfo’ does not name a type
   static void SetBinaryType( Local<String> property, Local<Value> value, const AccessorInfo& info );
                                                                                ^
../src/datachannel.h:82:94: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static void SetBinaryType( Local<String> property, Local<Value> value, const AccessorInfo& info );
                                                                                              ^
../src/datachannel.h:83:75: error: ‘AccessorInfo’ does not name a type
   static void ReadOnly( Local<String> property, Local<Value> value, const AccessorInfo& info );
                                                                           ^
../src/datachannel.h:83:89: warning: ISO C++ forbids declaration of ‘info’ with no type [-fpermissive]
   static void ReadOnly( Local<String> property, Local<Value> value, const AccessorInfo& info );
                                                                                         ^
make[2]: *** [Release/obj.target/webrtc/src/binding.o] Error 1

webrtc.node don't build correctly for mac

/Users/wwwposta/node_modules/node-webrtc/node_modules/bindings/bindings.js:83
throw e
^
Error: dlopen(/Users/wwwposta/node_modules/node-webrtc/build/Release/webrtc.node, 1): Symbol not found: OBJC_CLASS$_NSColor
Referenced from: /Users/wwwposta/node_modules/node-webrtc/build/Release/webrtc.node
Expected in: dynamic lookup

at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at bindings (/Users/wwwposta/node_modules/node-webrtc/node_modules/bindings/bindings.js:76:44)
at Object.<anonymous> (/Users/wwwposta/node_modules/node-webrtc/src/peerconnection.js:1:96)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

Build environment depends on python2

Python is required for building libjingle (gclient needs it). Is it possible to avoid using python, and maybe rely on node instead? Otherwise the build scripts should check for python and report a useful error message if it isn't found.

Consider using NAN

Not sure if this will be of interest, but I know @rvagg built it to make writing native bindings to things more portable across node versions:

https://github.com/rvagg/nan

Additionally, it's worth noting that this was created to assist with the work Rod does with leveldown so it's been built and tested around a solid use case.

Just something to consider as I know the breadth of the underlying webrtc c++ library is pretty massive so anything that means writing less code is probably a good thing.

Offer official windows support.

As long as this project remains in the scope of a relay server or a data channel this may not be necessary, but if this api exposes a mechanism for streaming video from a remote server there are definite use cases for offering the ability to capture and stream applications from a windows instance.

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.