How to create your own video chat app in under 10 mins

Find this finished code for this tutorial here jsfiddle.net/TawnyOwl/j228hopd/

The first video chat powered by Icecomm was created in JSFiddle — 8 lines of front-end javascript and the result was the most curious chat roulette ever.

Since then Icecomm has evolved to suite of SDKs for e-commerce, email, phone integration, but at its heart is still the ability to create a multiway video chat in under 10 mins. That’s what we’ll be doing here

There are three pieces to put together

  • Some minimal boilerplate HTML to get the page set up
  • CSS to style our video streams’ appearance
  • The icecomm script tag and javascript

We’ll tick these off as we progress

Note at the end of this post there are a number of extension ideas to explore from making your video stream draggable to integrating with a React app.

But first the basic multiway video app. To get started, add the HTML code

This is the basic HTML framework into which we’re going to plant our video chat. Notice the HTML5 video element with id localVideo — our javascript will use this to locate where to add our local video stream (that is, the stream from our own camera)

Next let’s put together some basic styling

This will make our friend’s video full screen with ours overlaid in the bottom right corner (we’ll see how to make our video stream draggable as an extension to this post)

Now were onto the meat of the problem — adding the javascript that will get our video chat off the ground

First we must add the icecomm script — you can use the hosted CDN version at http://cdn.icecomm.io/icecomm.js.

Alternatively, install it with bower

bower install icecomm

Remember that to install with bower you’ll need to first install bower (using npm — the package manager that comes with Node [link])

Now let’s create the client Icecomm object that you’ll be interacting with

Here you’ll need to grab an api key from icecomm.io/signup and drop that in

Set the video element’s content to be your own video stream (you do this on the event ‘local’ that’s first emitted you click to approve your video camera)

Now ready your app to listen for another client’s connection

and when they connect, you’ll add their video stream to the mix with

document.body.appendChild(options.video);

We want to remove others’ video streams on their disconnection so we set a listener for the ‘disconnect’ event and remove the video belonging to the participant with the relevant callerID

Finally, let’s connect to a room. Icecomm automatically supports rooms and each video chat has to take place inside one

(you can pass in {audio: false} as an additional second argument if you don’t want to have audio feedback when testing your video chat on the same browser)

And that’s it — a full multiway video chat app with only frontend javascript in under 10 mins (and around 8 lines of javascript) — the final code’s at jsfiddle.net/TawnyOwl/j228hopd/

Extensions

JSFiddle

If you wrote your code in JSFiddle — share the link with others to create your very own chat roulette (eminently cleaner of course)

Adding a minimal server

First we’ll add a simple Node/Express server to serve up our static file

With Node/Express that’s simple

1. Install node from https://nodejs.org/

2. Run ‘npm install express’ in your project’s folder

3. Create a file server.js

4. Add the following lines of javascript to server.js

5. Run server.js with

node server.js

Now at localhost:8000 you’ll find your video chat — ready to be deployed on heroku (follow steps to do that here)


Will Sentance is CTO at Codesmith. He teaches core software engineering, computer science, backend engineering with Node, and prepares students for hiring.