How to get Jitsi Meet Client up and running in an Angular 4 app using an External JavaScript Library

In this article I’m going to be getting a bare-bones Jitsi Meet conference up and running inside an Angular 4 app.

If you’re not familiar with Jitsi Meet, it’s an open-source, community-driven video conferencing platform that securely connects users across browsers and devices.

You can access their web resource directly here

I’m also going to be Angular 4 and following on from the last post I created

How to get an Angular 4 NodeJS site up and running in minutes

So let’s get started!

Assuming you have set up your project as in the previous demo …

Let’s set up some directory structure inside the Angular app that we can consume our third-party JavaScript from.

Inside the src directory, create a folder called vendor, and inside the vendor folder create a child folder called jitsi

Angular4 Jisti Meet Vendor Directory



Download the JavaScript we need to get Jitsi up and running into the folder we just created by right click the below link and choosing Save Link As.

http://malcolmswaine.com/wp-content/uploads/2017/11/external_api.js

Jisti Meet Rename Text File
Donwload Jitsi Meet JavaScript API

 

Next open the app.component.ts file in your text editor from src/app directory (C:\demos\basic-angular-4\basicAngular4\src\app in my example)

Edit App Component
Edit App Component

Modify the app.component.ts file so that it looks like the following


import { Component, AfterViewInit } from '@angular/core';
import '../vendor/jitsi/external_api.js';

declare var JitsiMeetExternalAPI: any;

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app';
   domain:string = "meet.jit.si";
    options: any;
    api: any;

 ngAfterViewInit(): void {
     
    this.options = {
      roomName: "JitsiMeetAPIExample",
      width: 700,
      height: 700,
      parentNode: document.querySelector('#meet')
    }

    this.api = new JitsiMeetExternalAPI(this.domain, this.options);
    }
}

Now we need to make sure that the JavaScript is included into the dependencies of the project, so in the project root open the .angular-cli.json file in an editor and add an entry to the scripts array

"scripts": ["vendor/jitsi/external_api.js"]
Add an Entry to Angular CLI Scripts
Add an Entry to Angular CLI Scripts

As in the previous example, we need do display our conference meeting down an a DOM element that we selected in the options here #meet
Edit the HTML template app.component.html

Edit App Component HTML
Edit App Component HTML

<div style="text-align: center;">
  <h1>Welcome to {{title}}!</h1>
  <div id="meet"></div>
</div>
 

Save Jitsi Meet HTML
Save Jitsi Meet HTML

Now let’s try running the app

Open a command prompt as Administrator and navigate to the Directory created the the Angular 4 CLI tool (in this case C:\demos\basic-angular-4\basicAngular4)

Open Command Promt Angular Jitsi Root
Open Command Promt Angular Jitsi Root

and run the command

npm start
NPM start Angular Jitsi
NPM start Angular Jitsi

Taking note of the host and port number (here it’s localhost:4200) paste the address into a browser window and you will see your Angular 4 Jitsi Client appear.

Jitsi Angular Up And Running In Minutes
Jitsi Angular Up And Running In Minutes

Sorry about the picture – my girlfriend is sleeping and waking her up by getting some good lighting may be dangerous!!

If Jitsi asks to use your Camera and Mic approve as appropriate.

The source for this demo can be found at

https://github.com/malcolmswainecom/Angular4JitsiClient

You will need to restore the NPM packages to get the solution up and running as I haven’t checked them in



How to get an Angular 4 NodeJS site up and running in minutes

In this demo I’ll be showing you how to use the Angular 4 CLI (command line interface) to get an Angular 4 website up and running on Node quickly. This will be the prerequisite for the next Jitsi series of tutorials where I will embed a Jitsi client into and Angular 4 app.

First let’s install the Angular CLI globally so that we can use it in future projects without having to install it again locally.

Open a command prompt (as Administrator) and run the NPM installer

npm install -g @angular/cli
Run Cmd and Administrator
Run Cmd and Administrator
NPM install Angular CLI
NPM install Angular CLI

When the NPM Install has completed open a file explorer window and let’s create a directory for our new files

Basic Angular Folder Structure
Basic Angular Folder Structure



Here I am using the path C:\demos\basic-angular-4

Back in your command window go to the directory you just created

cd C:\demos\basic-angular-4
Angular go to NPM home directory
Angular go to NPM home directory

Now get the Angular CLI tool to create our new project and run it on a Node JS http server

In the command window type

ng new basicAngular4
Angular CLI New Project
Angular CLI New Project

After pressing enter the command will run. It will take a few minutes to set things up, but it will be worth the wait by setting everything you need up to get running quickly.

When the new project creation has finished go to the newly created project directory

cd basicAngular4
Go To New Angular Project Folder
Go To New Angular Project Folder

and get NPM to compile our TypeScript and start a Node JS Web Server instance to serve our angular files.

NPM Start
Angular NG Start New NodeJS Server
Angular NPM Start New NodeJS Server Instance

You will notice that in the screen output it tell you that Node will be serving your files locally on a specific port – on mine it’s 4200

Open Angular Project on Node Port 4200
Open Angular Project on Node Port 4200

Open your web browser and type in the address specified in the NPM start output


http://localhost:4200/
Run Angular App In Browser
Run Angular App In Browser

That’s it!!

In the next demo, I’ll be using existing JavaScript libraries with our Angular Project.



Getting Jitsi Meet up and running on NodeJS

If you don’t know about Jitsi, it’s an open source video conferencing suite of tools, both client and server side that facilitates real-time communitication.

In this post I’m going to show how to get the very basics of using the client side Jitsi library working so that we can embed it in our own application. Note that we don’t need any server implementation for this, as Jitsi.org provides a service we can connect to and use as a meeting hub

In this example I am going to be using Node JS to serve up my basic web application. I am then going to insert a JavaScript reference to the Jitsi Meet library hosted in the Jitsi CDN.

When the Jisti JavaScript is loaded I am then going to execute some command to get the bare essentials for an online meeting between two parties A and B.

Node JS
Node JS

 

If you don’t already have a basic Node site up and running to server document then follow my blog at

Create a basic Node JS Web Site in minutes

When you have the basic structure set up open the index.html file in the public_html directory

Edit Index html
Edit Index html

I’m using Sublime Text to edit the file, but you can use whatever editor you choose.

Next add the JavaScript references to Jquery and Jitsi

Add-Jquery-And-Jisti
Add JQuery and Jisti




<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://meet.jit.si/external_api.js"></script>

And add the code to execute the Jitsi client using the JQuery OnLoad event

Set JQuery Onload to run Jisti Client
Set JQuery Onload to run Jisti Client

<script>
$(document).ready(function(){
       var domain = "meet.jit.si";
  var options = {
    roomName: "JitsiMeetAPIExample",
    width: 700,
    height: 700,
    parentNode: document.querySelector('#meet')
  }
var api = new JitsiMeetExternalAPI(domain, options);
});
</script>

We just need to add a placeholder into the markup to display our video component

meeting

 

Jisti meet basic javascipt and html
Jisti meet basic javascipt and html

 

You can find the code for this article at

https://github.com/malcolmswainecom/jitsi-meet-basic-web-client/wiki/Getting-Jitsi-Meet-up-and-running-on-Node-JS