All Projects â†’ elmarti â†’ meteor-video-chat

elmarti / meteor-video-chat

Licence: MIT license
Simple id based video calling in meteor

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to meteor-video-chat

awesome-blaze
🔥A curated list of awesome things related to Blaze
Stars: ✭ 29 (-12.12%)
Mutual labels:  meteor, blaze
fragments
Organise your bookmarks into boards
Stars: ✭ 56 (+69.7%)
Mutual labels:  meteor, blaze
blaze-magic-events
A new way of binding event handlers to html elements for Meteor's Blaze.
Stars: ✭ 26 (-21.21%)
Mutual labels:  meteor, blaze
Meteor Autoform
AutoForm is a Meteor package that adds UI components and helpers to easily create basic forms with automatic insert and update events, and automatic reactive validation.
Stars: ✭ 1,453 (+4303.03%)
Mutual labels:  meteor, blaze
blaze-integration
Vue integration with Meteor's Blaze rendering engine.
Stars: ✭ 24 (-27.27%)
Mutual labels:  meteor, blaze
meteor-blaze-bs4
Generic Bootstrap 4 components library for Meteor Blaze.
Stars: ✭ 20 (-39.39%)
Mutual labels:  meteor, blaze
MeteorCandy-meteor-admin-dashboard-devtool
The Fast, Secure and Scalable Admin Panel / Dashboard for Meteor.js
Stars: ✭ 50 (+51.52%)
Mutual labels:  meteor, blaze
meteor-autoform-bs-datetimepicker
Custom bootstrap-datetimepicker input type with timezone support for AutoForm
Stars: ✭ 18 (-45.45%)
Mutual labels:  meteor, blaze
WiFi-Direct-File-Transfer-App
WiFi Direct File Transfer is a experimental app that will allow sharing of data between Android devices running Android 4.0 or higher using a WiFi direct connection without the use of a WiFi access point. This will enable data transfer between devices without relying on any existing network infrastructure
Stars: ✭ 88 (+166.67%)
Mutual labels:  peer-to-peer
redoc
redoc - generate documentation from multiple project repos.
Stars: ✭ 21 (-36.36%)
Mutual labels:  meteor
graphqlizer
Make your meteor mongo collections accessible over a graphql endpoint
Stars: ✭ 37 (+12.12%)
Mutual labels:  meteor
haveno
Decentralized P2P exchange built on Monero and Tor
Stars: ✭ 542 (+1542.42%)
Mutual labels:  peer-to-peer
Meteor-logger-mongo
🍃 Meteor Logging: Store application log messages in MongoDB
Stars: ✭ 20 (-39.39%)
Mutual labels:  meteor
baserepo
Base repository
Stars: ✭ 71 (+115.15%)
Mutual labels:  tdd
braintree-meteor-example
A simple Meteor and Braintree drop-in integration
Stars: ✭ 25 (-24.24%)
Mutual labels:  meteor
grapher-vue
Integrates Vue with Grapher in an easy-to-use way
Stars: ✭ 19 (-42.42%)
Mutual labels:  meteor
React-Hue
🎨 A Material color palette tool based on Meteor, React, Material UI.
Stars: ✭ 45 (+36.36%)
Mutual labels:  meteor
TDDWeatherApp
Android App trying to apply TDD and using MVVM, Kotlin Coroutines
Stars: ✭ 38 (+15.15%)
Mutual labels:  tdd
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (+154.55%)
Mutual labels:  peer-to-peer
nvim
Repository for the Tandem NeoVim Plugin
Stars: ✭ 23 (-30.3%)
Mutual labels:  peer-to-peer

Meteor Video Chat

This extension allows you to implement user-to-user video calling in React, Angular and Blaze. This package now uses RTCFly

Example with React

Click here for the React example source code.

Example with Blaze

Click here for the Blaze example source code.

Stories in Ready Travis CI Maintainability

A note on previous versions

Meteor Video Chat used to use Meteor.VideoCallServices, however we have moved to a more modular system, opting for ES6 imports like so:

import { VideoCallServices } from 'meteor/elmarti:video-chat'; Old style code will be supported for the forseeable future, but we suggest moving over to the new format.

Usage with asteroid

The Meteor Video Chat client can be used by first running npm install meteor-video-chat, and then using the following mixin import


import { AsteroidVideoChatMixin } from 'meteor-video-chat';

After including this as an Asteroid mixin, as per the Asteroid page, you can access it like so:

    Asteroid.VideoCallServices;

init

Here you can set the RTCConfiguration. If you are testing outside of a LAN, you'll need to procure some STUN & TURN servers.

VideoCallServices.init({'iceServers': [{
    'urls': 'stun:stun.example.org'
  }]
});

Calling a user

To call a user, use the following method.

VideoCallServices.call(ICallParams);

These are the parameters that can be used:

interface ICallParams {
    id:string; //ID of the callee
    localElement: IHTMLMediaElement; //local HTMLElement
    remoteElement: IHTMLMediaElement; //remote HTMLElement
    video:boolean; //Do you want to show video?
    audio:boolean; //Do you want to show audio?
}

Deciding who can connect to whom

The follow method can be overridden on the server side to implement some kind of filtering. Returning false will cancel the call, and true will allow it to go ahead.

VideoCallServices.checkConnect = function(caller, target){
return *can caller and target call each other"
};

Answering a call

The first step is to handle the onReceiveCall callback and then to accept the call. The answerCall method accepts the ICallParams interfaces, just like the "call" method above

 VideoCallServices.onReceiveCall = (userId) => {
        VideoCallServices.answerCall(ICallParams);
 };

Muting local or remote videos

VideoCallServices.toggleLocalAudio();
VideoCallServices.toggleRemoteAudio();

Application state

The following values are stored in a reactive var

localMuted:boolean, 
remoteMuted:boolean, 
ringing:boolean,
inProgress:boolean

Getting the state

VideoCallServices.getState("localMuted");

Accessing the video (HTMLMediaElement) elements

const localVideo = VideoCallServices.getLocalVideo();
const remoteVideo = VideoCallServices.getRemoteVideo();

Ending call

Simply call

VideoCallServices.endCall();

Other events

The following method is invoked when the callee accepts the call.

VideoCallServices.onTargetAccept = () => {
}

The following method is invoked when either user ends the call

VideoCallServices.onTerminateCall = () => {
}

The following method invoked when the RTCPeerConnection instance has been created, making it possible to consitently mutate it or add a data channel

VideoCallServices.onPeerConnectionCreated = () => {
}

The following method is invoked on the caller browser when the callee rejects the call

VideoCallServices.onCallRejected = () => {
    
}

The following method is invoked on both the client and server whenever an error is caught. User is only passed on the server

VideoCallServices.setOnError(callback);

The onError section can also be used for handling errors thrown when obtaining the user media (Webcam/audio). See here for more info, or checkout the example.

This project is sponsored by the following:

BrowserStack

Sentry.io

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].