Git Product home page Git Product logo

vmux's Introduction

VMUX

Secure P2P text, audio and video chats in your browser using WebRTC

VMUX is a Skype/Hangouts alternative that runs in the browser. It's built on top of WebRTC so you don't need to install any plugins or use Flash. You can do one-to-one or multi-party video calls and all the communications are P2P and encrypted.

You can use it at https://vmux.co

Have any questions? Join the conversation at Gitter

There is also a talk about VMUX from FutureJS here: https://www.youtube.com/watch?v=T6iaHbrxKKQ

Browser support

VMUX works on the lastest stable versions of Chrome, Chrome for Android, Firefox, Firefox for Android and Opera.

For more info about WebRTC browser support go to WebRTC.org.

Getting started

Prerequisite: Redis

If you already have a working Node/NPM environment, should be as easy as:

npm install
gulp
npm start

( if gulp is not installed globally, do npm i -g gulp in a terminal. Use sudo in front of it if you get the EACCESS error. See here for more help )

Point your browser to localhost:5000

Deployment

If you're going to run VMUX in production, make sure you create your own Twitter app for authentication and it's configured properly.

Development

gulp can be used with --debug option to bundle VMUX with source maps which provides debugging with coffescript files to browsers that support it. With --debug and --bundleMode=browserify, source maps are generated at the end of the files site.js and vmux.js. and with --debug-- and --bundleMode=webpack, two additional files are generated, vmux.js.map and site.js.map for source maps.

Firebug debugger provides better results when debugging coffeescript files. Chrome has few bugs with source maps, for example there are some lines where we cannot put a breakpoint (see here).

The default coffeescript compiler is used when you bundle VMUX with gulp (to set it explicitly, you can use the option --coffeeScriptCompiler=coffeeScript) or you can use coffee-script-redux (coffee-script 2) compiler by using coffeeScriptCompiler=coffeeScriptRedux to have a better coffeescript debbuging experience.

You can also change the port by setting PORT value : PORT=4000 npm start and the environment with : NODE_ENV=production npm start

Author

Mauro Pompilio

License

VMUX is released under the BSD license.

vmux's People

Contributors

andrew avatar antouank avatar balupton avatar genecyber avatar kantorkel avatar malditogeek avatar rachkoud avatar ravenjohn 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

vmux's Issues

You are trying to access the attribute/method configured by `consumerKey`, which you did not configure. Time to configure it.

After the npm install I get this error with npm start:

$ npm start

> [email protected] start /Users/balupton/Projects/vmux
> coffee app.coffee

Error: WARNING: You are trying to access the attribute/method configured by `consumerKey`, which you did not configure. Time to configure it.
  at EveryModule.(anonymous function) [as consumerKey] (/Users/balupton/Projects/vmux/node_modules/everyauth/lib/modules/everymodule.js:133:13)
  at EveryModule.<anonymous> (/Users/balupton/Projects/vmux/node_modules/everyauth/lib/modules/oauth.js:27:14)
  at EveryModule.init (/Users/balupton/Projects/vmux/node_modules/everyauth/lib/modules/everymodule.js:77:8)
  at EveryModule.routeApp (/Users/balupton/Projects/vmux/node_modules/everyauth/lib/modules/everymodule.js:270:23)
  at Object.everyauth.middleware (/Users/balupton/Projects/vmux/node_modules/everyauth/index.js:38:15)
  at Object.<anonymous> (/Users/balupton/Projects/vmux/app.coffee:59:19, <js>:62:39)
  at Object.<anonymous> (/Users/balupton/Projects/vmux/app.coffee:3:1, <js>:70:4)
  at Module._compile (module.js:456:26)

npm ERR! weird error 1
npm ERR! not ok code 0

list room participants on page (re)load

I've found that if the initiator reloads the page after a remote participant has already clicked on the call link, they will disappear from my screen and won't show up again until I ask them to refresh the page.

Is there any way the UI could request the list of participants on page reload? That would make useability a lot better.

I am using firefox 29 and my peers use a mix of Chrome and Firefox.

inetgration with windows domain

it would be interesting integrating this with an AD (windows domain), so I could authenticate in the AD and the list of friends would be directly obtained as all AD users.

impossible to accept a ringing call while in another call

I was on a call today when another participant called me.
While I could hear the ringtone and was asked for permissions to use the camera/microphone, I couldn't see any popup asking me to accept/refuse the call.
The entire screen was displaying a video (with overlay hangup/mute controls) but the pop up did not show up.
I had to hang up and call again to stop the ringtone.

Is multi-participant a supported feature?

I'm using firefox 29 on osx.

node-webkit/chrome-app

Now that the whole app can be bundled into a single stand-alone JS file, porting it to node-webkit or a Chrome app should be pretty straight forward.

error while trying to run it localy

I see [object Object] when trying to login.
Steps to reproduce:

  1. TW_KEY=foo TW_SECRET=bar npm start
  2. go to 0.0.0.0:5000
  3. login with my twitter credentials and I see [object Object]

Browser: Chrome Version 27.0.1453.110
Node: 0.10.11
OS: Debian 7

Error: Step rememberTokenSecret of `twitter` is promising: requestTokenSecret ; however, the step returns nothing.

  1. setup my twitter app according to readme
  2. npm start
  3. 0.0.0.0:5000
  4. login with twitter
  5. redirected to http://0.0.0.0:5000/auth/twitter/callback?oauth_token=lLGZOYfPKf5U0el5YTYy0NNSTyxVYLuLtmaknilMheE&oauth_verifier=XZI9KhP4oBa8IechBMqO3IfEXNC8MRvfMruieOEE

And chrome display the following error (chrome 27.0.1453.110 on debian 7):
Error: Step rememberTokenSecret of twitter is promising: requestTokenSecret ; however, the step returns nothing. Fix the step by returning the expected values OR by returning a Promise that promises said values.
at Step.exec (/home/oren/misc/projects/vmux/node_modules/everyauth/lib/step.js:79:7)
at /home/oren/misc/projects/vmux/node_modules/everyauth/lib/stepSequence.js:26:34
at [object Object].Promise.fulfill (/home/oren/misc/projects/vmux/node_modules/everyauth/lib/promise.js:44:21)
at /home/oren/misc/projects/vmux/node_modules/everyauth/lib/stepSequence.js:29:19
at [object Object].Promise.callback (/home/oren/misc/projects/vmux/node_modules/everyauth/lib/promise.js:12:8)
at /home/oren/misc/projects/vmux/node_modules/everyauth/lib/stepSequence.js:28:19
at [object Object].Promise.fulfill (/home/oren/misc/projects/vmux/node_modules/everyauth/lib/promise.js:44:21)
at /home/oren/misc/projects/vmux/node_modules/everyauth/lib/modules/oauth.js:180:15
at /home/oren/misc/projects/vmux/node_modules/socketstream/node_modules/connect/lib/middleware/session/memory.js:75:11
at process._tickCallback (node.js:415:13)

turnserver isnt provided although it is referred in Dockerfile

turnserver is being called by supervisor, in the Dockerfile, although it is not provided in the source code. Is this the expected to happen?

[root@cte-dev-evl-mm2 trunk]# docker run -i -p 5000:5000 -t vmux
2014-03-05 15:57:28,098 CRIT Supervisor running as root (no user in config file)
2014-03-05 15:57:28,099 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2014-03-05 15:57:28,123 INFO RPC interface 'supervisor' initialized
2014-03-05 15:57:28,123 WARN cElementTree not installed, using slower XML parser for XML-RPC
2014-03-05 15:57:28,124 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2014-03-05 15:57:28,124 INFO supervisord started with pid 1
2014-03-05 15:57:29,135 INFO spawned: 'redis' with pid 7
2014-03-05 15:57:29,142 INFO spawned: 'vmux' with pid 8
2014-03-05 15:57:29,146 INFO spawnerr: can't find command '/src/vmux/turnserver'

Idle mode like Sqwiggle

It would be great to be able to set yourself (and other people in a room) as idle mode. Instead of sending video/audio it just takes photos every N seconds (just like Sqwiggle).

Documentation

Lots of it.

  • Document the SSE + Redis signaling endpoints
  • Document the OTR encryption
  • Document the pub/sub presence

problem using the given Dockerfile - redis library

I tried to use the given Dockerfile but I had no success. I guess that the redis library (or nodejs) that is installed is not the expected one.

root@9b0c3f3bb74f:/src/vmux# npm start

[email protected] start /src/vmux
coffee app.coffee

Starting SocketStream 0.3.10 in development mode...
↪ rpc:1 vmux.home
↩ rpc:1 vmux.home (7ms)
node_redis: no callback to send error: ERR wrong number of arguments for 'sadd' command

events.js:72
throw er; // Unhandled 'error' event
^
Error: ERR wrong number of arguments for 'sadd' command
at ReplyParser. (/src/vmux/node_modules/redis/index.js:305:31)
at ReplyParser.EventEmitter.emit (events.js:95:17)
at ReplyParser.send_error (/src/vmux/node_modules/redis/lib/parser/javascript.js:296:10)
at ReplyParser.execute (/src/vmux/node_modules/redis/lib/parser/javascript.js:181:22)
at RedisClient.on_data (/src/vmux/node_modules/redis/index.js:534:27)
at Socket. (/src/vmux/node_modules/redis/index.js:91:14)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket. (stream_readable.js:746:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable
(_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at readableAddChunk (_stream_readable.js:165:9)
at Socket.Readable.push (_stream_readable.js:127:10)
at TCP.onread (net.js:528:21)

Support groups

  • allow group calls
  • add one minute black and white updates for inactive users
  • add status messages for users
  • add text chat

Happy to collab on this. Or do it on a fork if it's not something for the official repo. Really want an open-source alternative to http://sqwiggle.com that meets my needs better.

no audio from one side

video works for both sides, but audio is missing from one party. i'm pretty sure sending side is having the issue because i tried the side that has working sending audio/video with another computer and everything worked for both sides.

the side isn't sending audio (i think) has windows vista chrome 27.0.1453.116 m
the side that is sending both is ubuntu chrome 27.0.1453.47 beta

any tricks on debugging what the issue could be?

vmux is awesome.

Cannot find module './bundler

After i run gulp, it comes as followings.
Error: Cannot find module './bundler'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (/opt/webrtc/vmux/gulpfile.js:4:20)
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)
at Module.require (module.js:364:17)

users are not seen

bothe the current version taken from SVN checkout and the vmux.co site don't work.
After login, I'm unable to see others in a given room.

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.