Talk to us
Talk to us

How to Make Video Chat Sites in 2023

How to Make Video Chat Sites in 2023

Video chat sites are websites that allow users to communicate with each other through video and audio in real time. People can use these sites for various purposes, such as holding business meetings, connecting with friends and family, or meeting new people. Many video chat sites offer features such as text messaging, screen sharing, and the ability to join a video chat room with multiple participants. Some popular video chat sites include Zoom, Skype, and Google Meet.

How popular is the Video Chat Market?

The video chat market has become increasingly popular as technological advances have made connecting remotely easier. According to a report by MarketsandMarkets, the global video conferencing market will reach a value of $16.3 billion by 2022, growing at a compound annual growth rate of 16.2% from 2017 to 2022.

In addition to business and professional use, video chat has become a popular way for people to stay connected with friends and family, especially during the COVID-19 pandemic. As a result, consumer demand for video chat apps and services has also increased.

You may also like: Best 8 Video Chat Online Sites

A Detailed Guide on How to Build Video Chatting Sites

Building a video chat site can be a challenging but rewarding project. It allows you to create a platform for people to connect with each other through video and audio in real time. ZEGOCLOUD Video Call SDK is a software development kit (SDK) that allows developers to add video call functionality to their applications. The SDK provides a range of features and tools to help developers create high-quality video call experiences for their users.

Using the ZEGOCLOUD Video Call SDK, developers can create engaging and reliable video call experiences for their users, whether for business, social, or other purposes.

Why Use ZEGOCLOUD’s Video Call SDK?

You should use ZEGOCLOUD’s Video Call SDK in your video chatting site project for several reasons. Below are some of them:

High-quality video and audio

The ZEGOCLOUD Video Call SDK supports high-definition video and low-latency audio, providing users a smooth and precise video call experience.

Easy integration

The SDK is easy to integrate into various projects. It provides clear documentation and support resources available to help developers.

Cross-platform compatibility

The ZEGOCLOUD Video Call SDK is compatible with various programming languages and platforms. These include C++, Java, and iOS.


The SDK can handle many users and scale to meet your project’s needs as it grows.


  • ZEGOCLOUD Developer account —Sign up
  • Text editor or IDE of choice.
  • Computer with multimedia support and internet connectivity.
  • Web development basics

Video Call SDK integration

Follow these steps to integrate the Video Call Kit SDK:

Create a project

To create a new project and set up a local web server for testing, follow these steps:

  1. Create two new files in your project: index.html and index.js.
  2. Add the following code to index.html:

    <meta charset="UTF-8">
    <title>Zego Express Video Call</title>
    <style type="text/css">
        * {
            font-family: sans-serif;

        h4 {
            text-align: center;

        #local-video, #remote-video {
            width: 400px;
            height: 300px;
            border: 1px solid #dfdfdf;

        #local-video {
            position: relative;
            margin: 0 auto;
            display: block;

        #remote-video {
            display: flex;
            margin: auto;
            position: relative !important;

        Zego RTC Video Call
    <h4>Local video</h4>
    <div id="local-video"></div>
    <h4>Remote video</h4>
    <div id="remote-video"></div>


To test your app on a local web server, you can use the live-server add-on. If you don’t already have live-server installed, you can install it by running the following command:

npm i live-server -g

Once installed, you can start the local web server by using the following command:


Import the SDK

Finished the job of making the project! Let’s add the software development kit to our project. Please follow the steps below to get this done:

  1. To install the necessary dependencies for a project using the ZEGOCLOUD Video Call SDK, you will need to run the following command:
npm install zego-express-engine-webrtc

This command will install the zego-express-engine-webrtc package and any other necessary dependencies.

  1. To add the Video Call SDK to your project, you will need to import it into your index.js file. To do so, add the following line at the top of your file:
const ZegoExpressEngine = require('zego-express-engine-webrtc').ZegoExpressEngine;

This line will import the ZegoExpressEngine class from the zego-express-engine-webrtc package. You can then use this class to create an instance of the SDK and access its features and functionality.

Implement a Basic Voice Call

You may now proceed with adding the feature of video calls to your project after including the Video Call SDK. Take the following actions to use the SDK for video chat:

Initialize ZegoExpressEngine

Before A and B may publish and play streams, the ZegoExpressEngine SDK must be initialized. You must enter the Server URL and your AppID after the ZegoExpressEngine object has been generated.

// Unique AppID of a project
let appID = ; 
// Access server address.

let server = "";

// Instance initialization
const zg = new ZegoExpressEngine(appID, server);

Check if Browser is Compatible with WebRTC.

Many different modern browsers are compatible with the Video Call SDK. Please execute the following codes to see if yours is supported:

const result = await zg.checkSystemRequirements();
// The [result] shows compatibility status 


Log in to a room

We are done putting together a new ZegoExpressEngine instance. You can now go into a room on your own. To do this, you can just call the loginRoom function.

// Log in to a room. If the login succeeds, `true` is returned.

let userID = Util.getBrow() + '_' + new Date().getTime();
let userName = "user0001";
let roomID = "0001";
let token = ;
// To prevent yourself from missing any notification, listen for callback events such as user login or logout, room connection status updates, and stream publishing status updates before logging in to a room.
zg.on('roomStateChanged', async (roomID, reason, errorCode, extendedData) => {

zg.loginRoom(roomID, token, { userID, userName: userID }, { userUpdate: true }).then(result => {
     if (result == true) {
        console.log("login success")

roomStateUpdate: This function displays the connection state of the currently logged-in user. It updates the user’s connection status within the video chat room, such as whether they are connected or disconnected. This information can be helpful for other users in the room, as well as for the user themselves, as it allows them to see their connection status and take any necessary actions if disconnected.

// Callback for info on the current user's room status.
zg.on('roomStateUpdate', (roomID,state,errorCode,extendedData) => {
    if (state == 'DISCONNECTED') {
        // Disconnected from the room

    if (state == 'CONNECTING') {
        // Connecting to the room

    if (state == 'CONNECTED') {
        // Connected to the room

roomUserUpdate: The function is used to obtain updates on the status of users in the video chat room. This may include information to keep track of the users in the room and their status, and take any necessary actions in response to changes in their status. For example, to update a user list or display a notification when a user joins or leaves the room.

zg.on('roomUserUpdate', (roomID, updateType, userList) => {
        `roomUserUpdate: room ${roomID}, user ${updateType === 'ADD' ? 'added' : 'left'} `,

roomStreamUpdate is in charge of getting updated information about the room’s streams.

zg.on('roomStreamUpdate', async (roomID, updateType, streamList, extendedData) => {
    if (updateType == 'ADD') {
        // New stream added, starts playing the stream. 
    } else if (updateType == 'DELETE') {
        // Stream deleted, stops playing the stream.

Publishing Streams

The createStream function generates an audio/video stream on the local machine. The function will start recording audio and video from the local device’s microphone and camera when called.

This stream can then be used for various purposes. Among them sharing it with other users in a video chat or broadcasting it to a larger audience.

// Before proceeding, you must wait for the ZEGOCLOUD server to return the local stream object after calling the CreateStream method.

const localStream = await zg.createStream({camera :{audio:true,video:true}});
// Get the audio tag.
const localAudio = document.getElementById('local-video');
// A MediaStream object is what makes up the local stream. You can make audio play by setting the srcObject property of video or audio to the local stream.
localVideo.srcObject = localStream;

The startPublishingStream function is used to begin sending a local audio and video stream to remote viewers. To use this function, you will need to provide a StreamID and a media stream object. The StreamID is a unique identifier that identifies the stream being published. The media stream object is an object that represents the transmitted audio and video stream. Calling the createStream function is how you obtain it, by an audio/video stream on the local machine.

To start publishing a stream, you can call the startPublishingStream function with the following syntax:

startPublishingStream(StreamID, localStream);

Where StreamID is the unique identifier for the stream being published, and localStream is the media stream object obtained from the createStream function. This will start transmitting the audio and video stream to remote viewers, allowing them to see and hear it in real time.

Playing Streams

Previously, we had the ability to stream live video. To start playing the video, all we needed to do was pass the stream’s ID as the value for the streamID parameter in the startPlayingStream function.

const remoteStream = await zg.startPlayingStream(streamID);

// The remoteVideo object represents your webpage's <video> or <audio> element.

remoteVideo.srcObject = remoteStream;

Stop publishing streams

To stop broadcasting a local video stream, you can use the stopPublishingStream function and provide the stream ID as an argument.


Destroy Stream

The destroyStream function can be used to end a local media stream.

// When the createStream method is called, a MediaStream object is made and given the name "localStream."


Stop playing stream

Call stopPlayingStream with the stream ID to stop a remote video feed from playing.


Log out of a room

To log out, you must use the logoutRoom function and provide the room ID as an argument.


For more information on creating video chat sites using ZEGOCLOUD’s Video Call SDK, please refer to the Video Call SDK documentation.

Run a demo.

To develop of group video chat applications, you can use a sample demo source code as a starting point.


Video chat sites allow users to communicate with each other using video and audio in real-time over the internet. Building a video chat site requires web development skills, knowledge of video chat technologies, and an understanding of user experience design. All these requirements can be simplified using powerful video chat tools like the ZEGOCLOUD Video Call SDK.

Talk to Expert

Learn more about our solutions and get your question answered.

Talk to us

Take your apps to the next level with our voice, video and chat APIs

Free Trial
  • 10,000 minutes for free
  • 4,000+ corporate clients
  • 3 Billion daily call minutes

Stay updated with us by signing up for our newsletter!

Don't miss out on important news and updates from ZEGOCLOUD!

* You may unsubscribe at any time using the unsubscribe link in the digest email. See our privacy policy for more information.