Go to file
Lyubo Marinov 771d60f954 Associate remote participant w/ JitsiConference (_UPDATED)
The commit message of "Associate remote participant w/ JitsiConference
(_JOINED)" explains the motivation for this commit.

Practically, _JOINED and _LEFT combined with "Remove remote participants
who are no longer of interest" should alleviate the problem with
multiplying remote participants to an acceptable level of annoyance.

Technically though, a remote participant cannot be identified by an ID
only. The ID is (somewhat) "unique" in the context of a single
JitsiConference instance. So in order to not have to scratch our heads
over an obscure corner, racing case, it's better to always identify
remote participants by the pair id-conference. Unfortunately, that's a
bit of a high order given the existing source code. So I've implemented
the cases which are the easiest so that new source code written with
participantUpdated is more likely to identify a remote participant with
the pair id-conference.

Additionally, the commit "Reduce direct read access to the
features/base/participants redux state" brings more control back to the
functions of the feature base/participants so that one day we can (if we
choose to) do something like, for example:

If getParticipants is called with a conference, it returns the
participants from features/base/participants who are associated with the
specified conference. If no conference is specified in the function
call, then default to the conference which is the primary focus of the
app at the time of the function call. Added to the above, this should
allow us to further reduce the cases in which we're identifying remote
participants by id only and get us even closer to a more "predictable"
behavior in corner, racing cases.
2018-05-23 09:46:15 -05:00
android Coding style: comments, formatting, sorting order 2018-05-20 19:01:59 -05:00
connection_optimization Updates config feature and whitelists options that can be overridden. (#2282) 2017-12-12 11:16:55 -08:00
css feat(toolbar): add beta tag to live streaming button (#3007) 2018-05-21 15:16:38 -07:00
debian Updates postinst prosody (#2896) 2018-04-30 15:19:30 -07:00
doc feat(iframe_api): Add invite functionality. 2018-05-03 10:31:15 +02:00
flow-typed/npm Upgrade NPM dependencies/packages: react-native 0.50 2017-12-04 00:45:18 -06:00
fonts feat(recording): new label for live streaming (#2890) 2018-04-29 21:30:07 -07:00
images Refactor PagedList components to be independent from the lists it renders 2018-05-01 09:09:32 -05:00
ios [iOS] Fix running in Debug mode on a device 2018-05-21 14:05:58 +02:00
lang [RN] Adjust button labels to reflext the actual state 2018-05-22 12:02:05 +02:00
modules Associate remote participant w/ JitsiConference (_LEFT) 2018-05-23 09:46:15 -05:00
react Associate remote participant w/ JitsiConference (_UPDATED) 2018-05-23 09:46:15 -05:00
resources Adding cancel to mod_muc_call 2018-05-14 16:34:37 +00:00
service feat(recording): frontend logic can support live streaming and recording (#2952) 2018-05-16 07:00:16 -07:00
sounds Outgoing call ringtones (#2949) 2018-05-16 11:03:10 -04:00
static feat(welcome): new design (#2492) 2018-02-21 22:58:55 -06:00
.buckconfig Merge jitsi-meet-react's mobile support 2016-10-12 10:31:52 -05:00
.editorconfig The Makefile file format requires tab characters 2016-11-23 15:54:03 -06:00
.eslintignore flow-typed 2017-02-03 16:36:14 -06:00
.eslintrc.js use central jitsi eslint config (#2108) 2017-10-25 16:02:14 -07:00
.flowconfig feat(modals): use dark theme 2018-03-20 16:06:50 -05:00
.gitattributes react-native 0.40.0 2017-01-22 12:32:08 -06:00
.gitignore Upgrade NPM dependencies/packages: react-native 0.50 2017-12-04 00:45:18 -06:00
.travis.yml fix(.travis.yml): xcode9.3 2018-05-08 10:38:17 -05:00
.watchmanconfig Merge jitsi-meet-react's mobile support 2016-10-12 10:31:52 -05:00
CONTRIBUTING.md Update CONTRIBUTING.md (#2601) 2018-03-20 09:49:35 -05:00
ConferenceEvents.js feat(eslint): Enable for non react files 2017-10-16 14:36:29 -05:00
LICENSE Moves original contribution note 2015-09-19 12:23:54 -05:00
Makefile Cleans libs folder before create it and deploy to it. 2018-05-01 09:15:57 -05:00
README.md Updated nodejs requirement 2018-05-16 09:48:47 +02:00
analytics-ga.js fix(ga): Change the cookieDomain parameter to 'auto'. (#2954) 2018-05-11 08:32:02 -07:00
app.js Make web use the redux settings/profile 2018-05-09 15:20:22 +02:00
base.html add support for possible ssi of <base> attribute 2016-05-20 16:51:37 -05:00
conference.js Associate remote participant w/ JitsiConference (_UPDATED) 2018-05-23 09:46:15 -05:00
config.js ref(toolbar): remove reference to unused config autoEnableDesktopSharing 2018-04-11 10:35:01 +02:00
connection.js ref(base/connection): conferenceFailed error argument 2018-05-04 13:02:19 +02:00
favicon.ico Added favicon.ico for 1) better jitsi brand recognition and 2) getting rid of warnings in web server log files 2014-06-05 13:22:44 +03:00
index.android.js feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
index.html feat(welcome): new design (#2492) 2018-02-21 22:58:55 -06:00
index.ios.js feat(web/RN): update React to v16 and React Native to 0.49 2017-11-02 14:32:35 +01:00
interface_config.js feat(recording): frontend logic can support live streaming and recording (#2952) 2018-05-16 07:00:16 -07:00
logging_config.js fix(RN logging): sync with logging_config.js (#2382) 2018-01-17 10:59:48 -08:00
package-lock.json redux 4.0.0, react-redux 5.0.7 2018-05-23 08:48:13 -05:00
package.json redux 4.0.0, react-redux 5.0.7 2018-05-23 08:48:13 -05:00
plugin.head.html Adds empty SSI templates to avoid 404. 2015-03-31 11:17:26 +02:00
title.html Moves favicon into the title html. 2016-08-01 17:11:16 -05:00
webpack.config.js improve invite error handling (#2649) 2018-03-23 09:37:04 -07:00

README.md

Jitsi Meet - Secure, Simple and Scalable Video Conferences

Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses Jitsi Videobridge to provide high quality, secure and scalable video conferences. You can see Jitsi Meet in action here at the session #482 of the VoIP Users Conference.

The Jitsi Meet client runs in your browser, without the need for installing anything on your computer. You can also try it out yourself at https://meet.jit.si .

Jitsi Meet allows for very efficient collaboration. It allows users to stream their desktop or only some windows. It also supports shared document editing with Etherpad.

Installation

On the client side, no installation is necessary. You just point your browser to the URL of your deployment. This section is about installing the Jitsi Meet suite on your server and hosting your own conferencing service.

Installing Jitsi Meet is quite a simple experience. For Debian-based systems, we recommend following the quick-install document, which uses the package system.

For other systems, or if you wish to install all components manually, see the detailed manual installation instructions.

Download

Latest stable release release

You can download Debian/Ubuntu binaries:

You can download source archives (produced by make source-package):

You can get our mobile versions from here:

Building the sources

Node.js >= 8 is required.

On Debian/Ubuntu systems, the required packages can be installed with:

sudo apt-get install npm nodejs
cd jitsi-meet
npm install

To build the Jitsi Meet application, just type

make

Working with the library sources (lib-jitsi-meet)

By default the library is build from its git repository sources. The default dependency path in package.json is :

"lib-jitsi-meet": "jitsi/lib-jitsi-meet",

To work with local copy you must change the path to:

"lib-jitsi-meet": "file:///Users/name/local-lib-jitsi-meet-copy",

To make the project you must force it to take the sources as 'npm update' will not do it.

npm install lib-jitsi-meet --force && make

Or if you are making only changes to the library:

npm install lib-jitsi-meet --force && make deploy-lib-jitsi-meet

Alternative way is to use npm link. It allows to link lib-jitsi-meet dependency to local source in few steps:

cd lib-jitsi-meet

#### create global symlink for lib-jitsi-meet package
npm link

cd ../jitsi-meet

#### create symlink from the local node_modules folder to the global lib-jitsi-meet symlink
npm link lib-jitsi-meet

So now after changes in local lib-jitsi-meet repository you can rebuild it with npm run install and your jitsi-meet repository will use that modified library. Note: when using node version 4.x, the make file of jitsi-meet do npm update which will delete the link, no longer the case with version 6.x.

If you do not want to use local repository anymore you should run

cd jitsi-meet
npm unlink lib-jitsi-meet
npm install

Running with webpack-dev-server for development

Use it at the CLI, type

make dev

By default the backend deployment used is beta.meet.jit.si, you can point the Jitsi-Meet app at a different backend by using a proxy server. To do this set the WEBPACK_DEV_SERVER_PROXY_TARGET variable:

export WEBPACK_DEV_SERVER_PROXY_TARGET=https://your-example-server.com
make dev

The app should be running at https://localhost:8080/

Contributing

If you are looking to contribute to Jitsi Meet, first of all, thank you! Please see our guidelines for contributing.

Embedding in external applications

Jitsi Meet provides a very flexible way of embedding it in external applications by using the Jitsi Meet API.

Security

WebRTC today does not provide a way of conducting multiparty conversations with end-to-end encryption. As a matter of fact, unless you consistently vocally compare DTLS fingerprints with your peers, the same goes for one-to-one calls. As a result when using a Jitsi Meet instance, your stream is encrypted on the network but decrypted on the machine that hosts the bridge.

The Jitsi Meet architecture allows you to deploy your own version, including all server components, and in that case your security guarantees will be roughly equivalent to these of a direct one-to-one WebRTC call. This is what's unique to Jitsi Meet in terms of security.

The meet.jit.si service is maintained by the Jitsi team at Atlassian.

Mobile app

Jitsi Meet is also available as a React Native app for Android and iOS. Instructions on how to build it can be found here.

Acknowledgements

Jitsi Meet started out as a sample conferencing application using Jitsi Videobridge. It was originally developed by then ESTOS' developer Philipp Hancke who then contributed it to the community where development continues with joint forces!