{"id":1585,"date":"2023-05-28T09:53:00","date_gmt":"2023-05-28T04:23:00","guid":{"rendered":"https:\/\/www.enablex.io\/insights\/?p=1585"},"modified":"2025-06-06T06:17:52","modified_gmt":"2025-06-06T00:47:52","slug":"enablex-video-calling-using-web-push-notification","status":"publish","type":"post","link":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/","title":{"rendered":"Make Video Calling App using a Web Push Notification"},"content":{"rendered":"<p style=\"text-align: left;\">This blog post will guide you on how to make a video call on the web using Chrome browser without installing any application. We\u2019ll be using EnableX to handle the video calling and FCM (Firebase Cloud Messaging) to handle the push notifications on the web\/browser.<\/p>\n<h2>How to build a WebRTC based video calling app using push notifications<\/h2>\n<p>EnableX is a cloud-based communications platform (CPaaS) that provides all the necessary toolkits\/APIs to establish a video call in web or mobile applications. It offers two sets of APIs to achieve this:<\/p>\n<ul style=\"margin-left: 40px;\">\n<li><strong>Server APIs:<\/strong> The client endpoint must set up an application server that carries the task of creating a Room on the EnableX server, obtaining the Room ID, and creating a token to allow the user to join the Room by calling Restful APIs known as Server APIs.<\/li>\n<li><strong>Client APIs:<\/strong> While the Server APIs deal mainly with provisioning the Room and authorising the user, Client APIs handle the actual communication part like connecting to the Room, publishing and subscribing to the media streams, handling in-session events, etc. These Client APIs are a part of EnableX <a href=\"https:\/\/www.enablex.io\/developer\/video-api\/client-api\/web-toolkit\/\" target=\"_blank\" rel=\"noopener\"> Toolkit\/SDK<\/a> that needs to be downloaded to enable the client endpoint to make video calls using a native browser (in this case).<\/li>\n<\/ul>\n<p>Now that we have a fair understanding of how EnableX establishes video calls, all we have to do is find a way to inform the other party of an incoming call. As we do not have any specific video calling application installed for this purpose and are only using a native browser, we have to figure out a way to send a notification to the other party. This is where Firebase comes to our rescue.<\/p>\n<p>Firebase is a cross-platform cloud solution for sending messages and notifications on Android, iOS, and the web. We can use these push notifications to send EnableX token to join the Video Room initiated by the caller, to the callee.<\/p>\n<h3>Steps For Implementation of Video Calling Using Push Notification<\/h3>\n<ul>\n<li>Account creation:\n<ul>\n<li>Register for a free EnableX trial account <a href=\"https:\/\/www.enablex.io\/free-trial\/?utm_source=Insights&amp;utm_medium=Blog&amp;utm_campaign=organic\">here<\/a><\/li>\n<li>Create a video project at<a href=\"https:\/\/portal.enablex.io\/projects\/new-project\/\"> https:\/\/portal.enablex.io\/projects\/new-project\/<\/a> and obtain the project credentials i.e.<strong> APP ID<\/strong> &amp; <strong>APP Key<\/strong> generated against the project.<\/li>\n<\/ul>\n<\/li>\n<li>Set up your project on <a href=\"https:\/\/firebase.google.com\/docs\/web\/setup\"> Firebase<\/a> using <a href=\"https:\/\/console.firebase.google.com\/\"> https:\/\/console.firebase.google.com\/<\/a>\n<p><a href=\"https:\/\/www.enablex.io\/free-trial\/?utm_source=Insights&amp;utm_medium=Blog&amp;utm_campaign=organic\"><img decoding=\"async\" class=\"aligncenter wp-image-3045 size-large\" title=\"\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Free-WebRTC-Video-API-Trial-1024x351.png\" alt=\"Build video call application using push notification \" width=\"760\" height=\"261\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Free-WebRTC-Video-API-Trial-1024x351.png 1024w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Free-WebRTC-Video-API-Trial-300x103.png 300w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Free-WebRTC-Video-API-Trial-768x263.png 768w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Free-WebRTC-Video-API-Trial.png 1173w\" sizes=\"(max-width: 760px) 100vw, 760px\" \/><\/a>The two main components of the video-communication architecture that need to be configured are:<\/p>\n<ul>\n<li>Server: The application server needs to be additionally configured to hold the push notification server keys like Firebase for Web and Android or APN for iOS. This database mapping of registered devices and respective push notification server keys allows the application server to prompt the respective push notification service to send a notification to the receiver.<\/li>\n<li>Client: A web (JavaScript) client <a href=\"https:\/\/developer.enablex.io\/video-api\/client-api\/web-toolkit\/\">SDK<\/a> needs to be downloaded on the client endpoint.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ol>\n<li style=\"list-style-type: none;\"><\/li>\n<\/ol>\n<h3>Test The Implementation of Video Calling Push Notifications<\/h3>\n<p>Now that we have set up our project on EnableX and Firebase, and configured the client and server accordingly, we are ready to try our first video call on the web using push notifications.<\/p>\n<ol>\n<li>Open the Chrome browser and enter the application server URL https:\/\/localhost:3456\/ to access the push notification server. You should see the following screen:<br \/>\n<img decoding=\"async\" class=\"wp-image-1587 size-full aligncenter\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush2.png\" alt=\"\" width=\"628\" height=\"356\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush2.png 628w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush2-300x170.png 300w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><\/li>\n<li><strong>Register the user\/client endpoint:<\/strong>\n<ul style=\"margin-left: 40px; text-align: left; list-style: none;\">\n<li>Register the user on the push notification server by entering the user\u2019s email or phone number or any other identifier. This registers a<strong> service worker <\/strong>which is a script run by your browser in the background to trigger <strong>push notifications<\/strong>.<\/li>\n<li><strong>Please note<\/strong> that the service workers are registered only once. So, if you have already registered the user, you will not get approval from the service worker again. hence unregister service workers, clear up cache, and start with a clean slate.<\/li>\n<li>Permit the push notification by clicking <strong>Allow<\/strong> and your service worker will get registered.<\/li>\n<li><\/li>\n<li><img decoding=\"async\" class=\"wp-image-1588 size-full aligncenter\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush3.png\" alt=\"\" width=\"628\" height=\"290\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush3.png 628w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush3-300x139.png 300w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><\/li>\n<\/ul>\n<\/li>\n<li><strong>Saving subscription on the backend<\/strong>\n<ul style=\"margin-left: 40px; text-align: left; list-style: none;\">\n<li>Once the user<strong> allows<\/strong> permission for subscription, you can save the subscription token in the database ( we have used Mongo). All you need to do is, retrieve the subscription token from the frontend and store it in the backend. Using this subscription token and user\/device mapping, the server would be able to trigger push notification messages.<\/li>\n<li>After saving the subscription, you can see the list of users with a button to make a call. Also,you\u2019ll notice in the developer toolbar that a service worker has been registered for this application.<\/li>\n<li><img decoding=\"async\" class=\"wp-image-1589 size-full aligncenter\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush4.png\" alt=\"\" width=\"628\" height=\"791\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush4.png 628w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush4-238x300.png 238w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><\/li>\n<\/ul>\n<\/li>\n<li><strong>Make a Call:<\/strong>\n<ul style=\"margin-left: 40px; text-align: left; list-style: none;\">\n<li>Clicking on the Call button will trigger a push notification to the callee displaying a message with the URL of the client application (eg: https:\/\/localhost:8080\/confo.html?token=) along with the EnableX video room token required to join the video call. The caller would be redirected to a new browser window with a URL like https:\/\/localhost:8080\/confo.html?token={ENABLEX_MODERATOR_TOKEN}<\/li>\n<\/ul>\n<\/li>\n<li><strong>Receive a Call:<\/strong>\n<ul style=\"margin-left: 40px; text-align: left; list-style: none;\">\n<li>The callee would receive a push notification toast on her browser.<\/li>\n<li><img decoding=\"async\" class=\"alignnone wp-image-1590 size-full\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush5.png\" alt=\"\" width=\"628\" height=\"180\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush5.png 628w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush5-300x86.png 300w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><\/li>\n<li>On clicking on the push notification toast, the callee would be redirected to a new browser window with a URL like https:\/\/localhost:8080\/confo.html?token={ENABLEX_PARTICIPANT_TOKEN} The video call shall now be in progress as shown below:<\/li>\n<li><img decoding=\"async\" class=\"alignnone wp-image-1591 \" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush6.png\" alt=\"\" width=\"794\" height=\"445\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush6.png 1431w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush6-300x168.png 300w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush6-1024x574.png 1024w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/webpush6-768x430.png 768w\" sizes=\"(max-width: 794px) 100vw, 794px\" \/><\/li>\n<li>If you are testing the video call on the same device, then you can see two browser windows- one window for the caller and another window for the callee.<\/li>\n<\/ul>\n<\/li>\n<li><strong>App Focus:<\/strong>\n<ul style=\"margin-left: 40px; text-align: left; list-style: none;\">\n<li>As your application is running on the browser, it is bound by certain constraints in terms of application focus.<\/li>\n<li>The browser shall bring your application under focus only when:<\/li>\n<li>&#8211; Your app is running in the currently selected browser tab.<\/li>\n<li>&#8211; The browser window\/tab currently has focus, as defined by the operating system.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Congratulations! You just created a video calling application on EnableX platform using web push notification running on chrome browser. Thrilled to try more? You can extend this application to integrate with Android &amp; iOS apps as well by simply following the ReadMe instructions in the GitHub repository: EnableX<a href=\"https:\/\/github.com\/EnableX\/EnableX-Video-Calling-App-Push-Notification-Service\"> video calling app using push notification<\/a><\/p>\n<p><strong>Code<\/strong><\/p>\n<p>The complete code for this post is available at &#8211;<\/p>\n<p><strong>Push Notification Server<\/strong> &#8211;<a href=\"https:\/\/github.com\/EnableX\/EnableX-Video-Calling-App-Push-Notification-Service\">https:\/\/github.com\/EnableX\/EnableX-Video-Calling-App-Push-Notification-Service <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog post will guide you on how to make a video call on the web using Chrome browser without installing any application. We\u2019ll be using EnableX to handle the video calling and FCM (Firebase Cloud Messaging) to handle the push notifications on the web\/browser. How to build a WebRTC based video calling app using &#8230;<\/p>\n","protected":false},"author":25,"featured_media":2007,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[134,122,23,93,110],"tags":[138,189,50,75,190,47],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Updated Guide: Make a video calling app using push notifications<\/title>\n<meta name=\"description\" content=\"This blog post will guide you on making a video calling app using Chrome without installing any application.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Updated Guide: Make a video calling app using push notifications\" \/>\n<meta property=\"og:description\" content=\"This blog post will guide you on making a video calling app using Chrome without installing any application.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/\" \/>\n<meta property=\"og:site_name\" content=\"Insights about video API, SMS API; WhatsApp for Business API\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-28T04:23:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-06T00:47:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Video-Calling-using-Web-Push-Notification.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"768\" \/>\n\t<meta property=\"og:image:height\" content=\"270\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Jason Wills\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@enablexio\" \/>\n<meta name=\"twitter:site\" content=\"@enablexio\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jason Wills\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Updated Guide: Make a video calling app using push notifications","description":"This blog post will guide you on making a video calling app using Chrome without installing any application.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/","og_locale":"en_US","og_type":"article","og_title":"Updated Guide: Make a video calling app using push notifications","og_description":"This blog post will guide you on making a video calling app using Chrome without installing any application.","og_url":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/","og_site_name":"Insights about video API, SMS API; WhatsApp for Business API","article_published_time":"2023-05-28T04:23:00+00:00","article_modified_time":"2025-06-06T00:47:52+00:00","og_image":[{"width":768,"height":270,"url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2021\/05\/Video-Calling-using-Web-Push-Notification.webp","type":"image\/webp"}],"author":"Jason Wills","twitter_card":"summary_large_image","twitter_creator":"@enablexio","twitter_site":"@enablexio","twitter_misc":{"Written by":"Jason Wills","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/#article","isPartOf":{"@id":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/"},"author":{"name":"Jason Wills","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/422d2b153c3c96827da141c6446d11a3"},"headline":"Make Video Calling App using a Web Push Notification","datePublished":"2023-05-28T04:23:00+00:00","dateModified":"2025-06-06T00:47:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/"},"wordCount":1018,"publisher":{"@id":"https:\/\/www.enablex.io\/insights\/#organization"},"keywords":["video api","Video Calling","video chat api","video conferencing","Web Push Notification","webrtc"],"articleSection":["Codes &amp; Tutorials","Communication APIs","TechTalks","Video API","WebRTC"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/","url":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/","name":"Updated Guide: Make a video calling app using push notifications","isPartOf":{"@id":"https:\/\/www.enablex.io\/insights\/#website"},"datePublished":"2023-05-28T04:23:00+00:00","dateModified":"2025-06-06T00:47:52+00:00","description":"This blog post will guide you on making a video calling app using Chrome without installing any application.","breadcrumb":{"@id":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.enablex.io\/insights\/enablex-video-calling-using-web-push-notification\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.enablex.io\/insights\/"},{"@type":"ListItem","position":2,"name":"Make Video Calling App using a Web Push Notification"}]},{"@type":"WebSite","@id":"https:\/\/www.enablex.io\/insights\/#website","url":"https:\/\/www.enablex.io\/insights\/","name":"Enablex","description":"","publisher":{"@id":"https:\/\/www.enablex.io\/insights\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.enablex.io\/insights\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.enablex.io\/insights\/#organization","name":"Enablex","url":"https:\/\/www.enablex.io\/insights\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/logo\/image\/","url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/05\/EnableX-Logo-01.png","contentUrl":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/05\/EnableX-Logo-01.png","width":17382,"height":3567,"caption":"Enablex"},"image":{"@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/enablexio","https:\/\/www.linkedin.com\/company\/vcloudx"]},{"@type":"Person","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/422d2b153c3c96827da141c6446d11a3","name":"Jason Wills","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/image\/","url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2025\/05\/envato-labs-ai-f14f6981-d7f8-4c3e-9234-00323c7d5ca0-96x96.jpg","contentUrl":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2025\/05\/envato-labs-ai-f14f6981-d7f8-4c3e-9234-00323c7d5ca0-96x96.jpg","caption":"Jason Wills"},"description":"Jason works behind the scenes at EnableX, helping to turn complex tech into practical tools that developers and businesses can actually use. With several years of experience in product development and platform architecture, he focuses on making communication technologies simpler, smarter and easier to build with. Whether he's writing step-by-step guides, product tips or explaining how our APIs work, Jason keeps things clear and useful.","sameAs":["https:\/\/www.enablex.io\/","https:\/\/www.linkedin.com\/company\/vcloudx\/"],"url":"https:\/\/www.enablex.io\/insights\/author\/jason-wills\/"}]}},"_links":{"self":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts\/1585"}],"collection":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/comments?post=1585"}],"version-history":[{"count":0,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts\/1585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/media\/2007"}],"wp:attachment":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/media?parent=1585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/categories?post=1585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/tags?post=1585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}