Talk to us
Talk to us

Blog Post

start building

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. These sites can be used for a variety of 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 in recent years, as technological advances have made it easier for people to connect with each other remotely. According to a report by MarketsandMarkets, the global video conferencing market is expected to reach a value of $16.3 billion by 2022, growing at a compound annual growth rate of 16.2% from 2017 to 2022. The increasing adoption of remote work and the proliferation of mobile devices with built-in cameras have contributed to the growth of the video chat market.

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

Overall, the video chat market is expected to continue to grow in the coming years, as more people turn to remote communication tools to stay connected and productive.

The video chat market has significant potential for growth, as demonstrated by the projected increase in the value of the global video conferencing market. In the following section, we will explore the use of ZEGOCLOUD API to create a free video chat website.

A Detailed Guide on How to Build Video Chatting Sites

Building a video chat site can be a challenging but rewarding project that allows you to create a platform for people to connect with each other through video and audio in real time.

Whether you are looking to build a video chatting site for business meetings, connecting with friends and family, or meeting new people, there are many considerations to take into account when building a video chat site. Some key steps to follow when building a video chat site include determining the purpose and target audience of your site, choosing a platform, designing and developing the site, testing and launching the site, and promoting and growing the site. By following these steps, you can create a successful and engaging video chat site that meets the needs of your users.

That being said, we’re going to use ZEGOCLOUD Video Call SDK to build our chatting video site in this section.

Video Call SDK Introduction

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. Some of the features offered by the ZEGOCLOUD Video Call SDK include support for high-definition video, low-latency audio, and real-time messaging, as well as tools for managing connections, handling errors, and monitoring performance.

By 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?

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

High-quality video and audio: The ZEGOCLOUD Video Call SDK supports high-definition video and low-latency audio, providing a smooth and clear video call experience for users.

Easy integration: The SDK is designed to be easy to integrate into a variety of projects, with clear documentation and support resources available to help developers get started.

Cross-platform compatibility: The ZEGOCLOUD Video Call SDK is compatible with a range of programming languages and platforms, including C++, Java, and iOS, making it suitable for a wide range of projects.

Scalability: The SDK is built to handle a large number of users and can scale to meet the needs of your project as it grows.

**Advanced features: **The ZEGOCLOUD Video Call SDK offers a range of advanced features, such as real-time messaging, connection management, error handling, and performance monitoring, to help developers create a fully-featured video call experience.

By using ZEGOCLOUD’s Video Call SDK, developers can add high-quality video call functionality to their projects, making it easier to connect with users and offer an engaging communication experience.


  • 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. The SDK makes it simple to incorporate group video chat capabilities into your app so that users can converse with one another via audio and video.

You can 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 is used to provide updates on the user’s connection status within the video chat room, such as whether they are connected or disconnected. This information can be useful for other users in the room, as well as for the user themselves, as it allows them to see the status of their connection and take any necessary actions if they are 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 such as whether a user has joined or left the room, or whether they are currently connected or disconnected. By using this function, you can 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, you might use roomUserUpdate 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 is used to generate an audio/video stream on the local machine. When called, the function will start recording both audio and video from the local device’s microphone and camera.

This stream can then be used for various purposes, such as 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 audio and video stream being transmitted. It is typically obtained by calling the createStream function, which generates 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 the stream 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.


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 a combination of 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.

To get started with the development of group video chat applications, you can use a sample demo source code as a starting point.

If you need any help with our products, our technical support team is available 24/7 to assist you.

Read More

ZEGOCLOUD With our fully customizable and easy-to-integrate Live SDK, you can quickly build reliable, scalable, and interactive live streaming into your mobile, web, and desktop apps.

Related posts