šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Sign inDemoInstall
Socket

ruby_rabbitmq_janus

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ruby_rabbitmq_janus

4.0.1
Rubygems
Version published
Maintainers
1
Created
Source

Ruby RabbitMQ Janus

RSpec Linter Gem Version Docs Maintainability Test Coverage Known Vulnerabilities

Ruby Gem for Janus WebRTC Gateway integration using RabbitMQ message queue

This gem is used to communicate to a server Janus through RabbitMQ software (Message-oriented middleware). It waiting a messages to Rails API who send to RabbitMQ server in a queue for janus server. janus processes a message and send to RabbitMQ server in a queue for gem. Once the received message is decoded and returned through the Rails API.

This gem is product by Dazzl.tv

Simple diagram

Menu

How to use

Installation

Use rubygem for installing gem in your application. Add in your Gemfile :

gem 'ruby_rabbitmq_janus'

And then execute :

bundle

Or install it yourself as :

gem install ruby_rabbitmq_janus

Install basic configuration :

rails g ruby_rabbitmq_janus:install

Requirements

Configuration

If you want used a customize configuration see ruby-rabbitmq-janus.yml

Janus

Configure one (or many) Janus server. See janus gateway documentation.

Configure the queue with rabbit with incremental number. So the first instance take a name to-janus-1 and all queues from sending in same queue.

Generators

Use generator for complete installation :

rails g -h
RubyRabbitmqJanus:
  ruby_rabbitmq_janus:configuration     # Generate a custom configuration file.
  ruby_rabbitmq_janus:create_request    # Create an request to json format for RubyRabbitmqJanus transaction.
  ruby_rabbitmq_janus:default_request   # Copy base request file sending to janus in application.
  ruby_rabbitmq_janus:initializer       # Generate a initializer to this gem for rails application.
  ruby_rabbitmq_janus:install           # Install RubyRabbitmqJanus in your Rails application

Requests

For create an new request is simple. Use a command generator :

rails g ruby_rabbitmq_janus:create_request test info 'transaction:<string>,body:{plugins:false}'
      create  config/requests/test/info.json

For more explain in requests files see default requests.

Usage

Usage information

This gem use rabbitmq for manage request sending to Janus, so see documentation Janus and documentation Rabbitmq. This gem use bunny gem for create connection with rabbitmq. See many guide : bunny documentation.

Standard Request

require 'ruby_rabbitmq_janus'

# Initialize standard object
t = RubyRabbitmqJanus::RRJ.new

# Ask info Janus Instance
t.session_endpoint_public do |transaction|
  transaction.publish_message('base::info')
end

=> @request={"janus"=>"server_info" ... }

Admin Request

NOTE: The request authentication HMAC-Signed token authentication is not available.

require 'ruby_rabbitmq_janus'

# Initialize admin object
t = RubyRabbitmqJanus::RRJAdmin.new

# Ask info sessions in Janus Instance
options = { instance: 42 }
t.admin_endpoint(options) do |transaction|
  transaction.publish_message('admin::sessions', options)
end

=> @request={"janus"=>"success" ... "sessions"=>[123, 456, 789]}

Listen Janus Event

require 'ruby_rabbitmq_janus'

# Create a class in your Rails application
actions = RubyRabbitmqJanus::ActionEvents.new.action

# Initialize a thread for listen public queue and send class to thread
RubyRabbitmqJanus::Janus::Concurrencies::Event.new.run(@actions)

Listen Janus Admin Event

require 'ruby_rabbitmq_janus'

# Create a class in your Rails application
actions = RubyRabbitmqJanus::ActionAdminEvents.new.action

# Initialize a thread for listen public admin queue and send class to thread
RubyRabbitmqJanus::Janus::Concurrencies::EventAdmin.new.run(@actions)

Upgrade

For upgrade your application read CHANGELOG.md

Development

RSpec test

Use docker for running SPEC

# Prepare images
docker-compose build

# Launch tiers service RabbitMQ
docker-compose up -d rabbit

# Launch tiers service Janus (ensure rabbit is started before and READY)
docker-compose up -d janus janus_token

## Excute ##

# Start for MongoID database
docker-compose run gem env MONGO=true bundle exec rake classic
docker-compose run gem env MONGO=true bundle exec rake concurrency

# Start for SQlite3 database
docker-compose run gem env MONGO=false bundle exec rake classic
docker-compose run gem env MONGO=false bundle exec rake concurrency

## OR ##

# Navigate in container an
docker-compose run gem ash
export MONGO=true
bundle exec rake classic

NOTE : Use SPEC_DEBUG=true bundle exec rake classic for stopping rspec execution when first test fail.

TIPS: for rspec install janus and rabbitmq server configured by default for user rabbitmq and use plugin echotest for janus server.

Use tags for rspec :

DescribeTypeName
Internaly functionconfig
Use bunny gemrabbit
Test log functionslog
Test configuration functionconfig
Test Gem contains CONSTANTSdescribe
Level request sending to janus (admin monitor API or classic)level
Request basic.base
Request with admin right in Janus application.admin
Request candidate/jseppeer
Request JSON sending to Rabbitmq -> Janusrequest
Test request attach typeattach
Test request type createcreate
Test request type detachdetach
Test request type janus infoinfo
Test request type testtest
Test request type handle listhandles
Test request type sesssion listsessions
Test request type handle informationhandle_info
Test request type (un)locking debugset_locking_debug
Test request type change log levelset_log_level
Test request type tokens listtokens
Test request type destroy sessiondestroy
Test request keepalivekeepalive
Test request type sdp offeroffer
Test request type trickle, send on candidatetrickle
Test request type trickles, send array candidatetrickles
Event(s) threadevent
Test thread public queueevent
Test thread admin queueevent_admin

Example usage rspec with tags :

rspec --tag --name:config --tag level:base

Documentation

Read documentation

The documentation is accessible in rubydoc

Generate developer documentation

This doc is generated with yard.

# Genereate doc
yard
# Launch server
yard server

See Yard Getting Started

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/dazzl-tv/ruby-rabbitmq-janus This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

FAQs

Package last updated on 23 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts