GithubHelp home page GithubHelp logo

palavatv / palava-machine Goto Github PK

View Code? Open in Web Editor NEW
102.0 21.0 15.0 66 KB

WebRTC signaling done in Ruby

Home Page: https://palava.tv

License: GNU Affero General Public License v3.0

Ruby 100.00%
palava webrtc-signaling webrtc signaling redis

palava-machine's Introduction

palava | machine [version] [ci]

palava.tv is a cost-free, simple to use, secure, and open source platform for video calls, built on top of the WebRTC technology.

This repository contains an alternative implementation of the palava.tv signaling backend. There is an overview of all parts of palava.tv at palavatv/palava.

Descripiton

PalavaMachine is a WebRTC signaling server. Signaling describes the process of finding other peers and exchange information about how to establish a media connection. It works together with the palava-client.

The server is implemented in EventMachine and Redis PubSub and communication to the clients is done via WebSockets.

This application is currently not part of the palava.tv stack

It was replaced by the Elixir-based signaltower, which uses the same protocol. Although this project is currently not actively worked on, it still functions as a drop-in replacement for the SignalTower and might also be developed further at some point.

Installation & Usage

Make sure you have redis(https://redis.io/download) installed, then install the palava_machine gem:

$ gem install palava_machine

To start the server on port 4233, run:

$ palava-machine

Daemonized Version

The PalavaMachine can be started as a daemon process for production usage:

$ palava-machine-daemon start

Stop it with

$ palava-machine-daemon stop

Configure using Environment Variables

You can set the address of the redis server via environment variable. The default is 'localhost:6379'.

$ export PALAVA_REDIS="some_ip:some_port"
$ bin/palava-machine

Specs

To run the test suite use

$ rspec

Credits

AGPLv3. Part of the palava project.

Copyright (C) 2014-2020 palava e. V.  [email protected]

Copyright (C) 2013 Jan Lelis          [email protected]
Copyright (C) 2013 Marius Melzer      [email protected]
Copyright (C) 2013 Stephan Thamm      [email protected]
Copyright (C) 2013 Kilian Ulbrich     [email protected]

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.

palava-machine's People

Contributors

farao avatar janlelis avatar thammi avatar tomka avatar wendelb avatar zealot128 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

palava-machine's Issues

Sending to connections without checking whether they exist

There are multiple calls like @connections[connection_id].fun() which do not check whether the connection still exists. One example is manager.rb:170.

These calls crash the whole process.

They should be replaced and we should check why the whole process crashes (even though there is an EM.error_handler())

redis_address is not used for stats

Hi,

in jobs/export_stats_job.rb you define initialize() with two parameters "redis_address" and "mongo_address" which can be given via command line.

But you don't use redis_address to start the redis-connection.
Instead you use hardcoded localhost:6379.

Thus you can't change the redis-server configuration withour losing the stats-mechanism.

The call should be changed to something like:
EM::Hiredis.connect "redis://#{@redis_address}/#{@redis_db}" (used in manager.rb)

Regards,
Andrwe

changable PIDFile path

Hi,

it should be possible to specify the path of the PIDFile while running in daemon-mode.

If you run the daemon as non-root-user the path of the daemon-binary has to be writeable for this user otherwise the daemon doesn't start.
This means currently you aren't able to install this application in a default linux FHS because the PIDFile would be created in /usr/bin/.

A quick fix I'm using is to add the following lines to the parameters of "Daemons.run":
dir_mode: :normal,
dir: "/var/run/palava-machine/",

This approach isn't quite portable as the path has to be created by the installation process.

Regards,
Andrwe

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.