{"id":34722,"date":"2026-01-28T17:22:09","date_gmt":"2026-01-28T16:22:09","guid":{"rendered":"https:\/\/www.azzurrodigitale.com\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/"},"modified":"2026-01-29T12:56:40","modified_gmt":"2026-01-29T11:56:40","slug":"machines-and-operators-always-in-sync-real-time-notifications-with-websocket","status":"publish","type":"post","link":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/","title":{"rendered":"Machines and operators always in sync: real-time notifications with WebSocket"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Indice dei contenuti<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #21bdff;color:#21bdff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #21bdff;color:#21bdff\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#When_are_WebSockets_needed\" >When are WebSockets needed?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#HTTP_vs_WebSocket\" >HTTP vs. WebSocket<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#The_concept_of_an_%E2%80%9Copen_channel%E2%80%9D\" >The concept of an \u201copen channel\u201d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#Pros_and_Cons_of_WebSockets\" >Pros and Cons of WebSockets<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#WebSockets_at_AzzurroDigitale\" >WebSockets at AzzurroDigitale<\/a><\/li><\/ul><\/nav><\/div>\n\n<h4 class=\"wp-block-heading\">Article by Andrea Mengato \u2013 Full Stack Developer at AzzurroDigitale<\/h4>\n\n<p><em>Discover how WebSockets transform web applications by enabling real-time notifications and instant updates. In manufacturing, this reduces machine downtime and improves coordination between operators and systems, boosting operational efficiency through persistent, targeted communication channels. <\/em><\/p>\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<p>In traditional web applications, the flow of information is often one-way or requires explicit user action: clicking a button or refreshing the page to see new data. However, in dynamic contexts such as the manufacturing sector, information needs to move in real time. <\/p>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"When_are_WebSockets_needed\"><\/span>When are WebSockets needed? <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>WebSockets are the enabling technology for any scenario where timeliness is critical. Imagine a production line: if a machine raises an alert, the operator needs to know the exact moment it happens, without manually refreshing their tablet. <strong>WebSockets allow the server to push data to the client<\/strong> (the tablet or browser) <strong>proactively<\/strong>, eliminating downtime.<br\/> <br\/> <br\/> <\/p>\n\n<p>For manufacturing companies, this <strong>translates into a drastic reduction in reaction times<\/strong>. It\u2019s not just about \u201cseeing data sooner,\u201d but about enabling instant coordination between machines, software, and operators, reducing machine downtime and improving resource management on the factory floor. <\/p>\n\n<h4 class=\"wp-block-heading\"><strong>Practical value for factory workers:<\/strong><\/h4>\n\n<ul class=\"wp-block-list\">\n<li>Reduced machine downtime<\/li>\n\n\n\n<li>Immediate response to faults or anomalies<\/li>\n\n\n\n<li>Instant coordination between machines and operators<\/li>\n\n\n\n<li>Reduced errors caused by outdated information<\/li>\n<\/ul>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"How-It-Works:-Semplificare-la-complessit&#xE0;\"><span class=\"ez-toc-section\" id=\"HTTP_vs_WebSocket\"><\/span>HTTP vs. WebSocket<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>To understand the revolution of WebSockets, think of the difference between a letter and a phone call.<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>HTTP (The classic model)<\/strong>: It\u2019s like sending a letter. The client (sender) sends a request, the server (recipient) receives it, processes it, and responds. Once the response is received, the conversation ends. If you want to know about any updates, you have to send another letter.<br\/> <br\/> <br\/>   <\/li>\n\n\n\n<li><strong>WebSocket<\/strong>: It\u2019s like a phone call. Once the connection is established, the line stays open. Both parties can talk (send data) at any time, in both directions, without having to dial again.  <\/li>\n<\/ul>\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"480\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1.png\" alt=\"\" class=\"wp-image-34700\" style=\"width:393px;height:auto\" srcset=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1.png 800w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1-300x180.png 300w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1-768x461.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_concept_of_an_%E2%80%9Copen_channel%E2%80%9D\"><\/span><strong>The concept of an \u201copen channel\u201d<\/strong> <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>Technically, a persistent <strong>tunnel is created between the frontend and the backend<\/strong>. This channel is \u201cfull-duplex,\u201d meaning data can travel simultaneously in both directions. There\u2019s no need to ask, \u201c<em>Are there any updates?<\/em>\u201d\u2014the server notifies you as soon as they happen.<br\/> <br\/> <br\/>  <\/p>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"Pro-e-contro-dei-WebSocket\"><span class=\"ez-toc-section\" id=\"Pros_and_Cons_of_WebSockets\"><\/span><strong>Pros and Cons of WebSockets<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul class=\"wp-block-list\">\n<li><strong>Pros (Efficiency and Speed)<\/strong>: Ideal for chat, monitoring dashboards, live notifications, and gaming. Network load is reduced because data is sent only when needed. <\/li>\n\n\n\n<li><strong>Cons (State Management)<\/strong>: Unlike a REST API call, which is \u201cstateless\u201d (has no memory), WebSockets are \u201cstateful.\u201d The server must know exactly who is connected and keep the connection active. This requires a robust backend architecture to handle multiple open connections simultaneously without crashing.  <\/li>\n<\/ul>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"WebSocket-In-AzzurroDigitale\"><span class=\"ez-toc-section\" id=\"WebSockets_at_AzzurroDigitale\"><\/span>WebSockets at AzzurroDigitale<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<h4 class=\"wp-block-heading\" id=\"Il-nostro-approccio:-WebSocket-+-Redis\">Our approach: WebSocket + Redis<\/h4>\n\n<p>Working on custom projects for the manufacturing sector, we faced t<strong>he challenge of communicating with specific operators based on their physical location<\/strong>. We didn\u2019t want to send a \u201cbroadcast\u201d message to everyone (risking confusion), but only to those at a specific workstation or to a specific operator. <\/p>\n\n<h4 class=\"wp-block-heading\"><strong>Practical Implementation<\/strong> <\/h4>\n\n<p>We implemented an architecture that combines the speed of WebSockets with the power of <strong>Redis<a id=\"8c5f00ea-b727-4d12-ab60-ae0e4c0afbf6-link\" href=\"#8c5f00ea-b727-4d12-ab60-ae0e4c0afbf6\">1<\/a><\/strong> as a fast store for temporary information. Here\u2019s how the flow we designed works: <\/p>\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/34565e32-e773-4172-a9fc-81b66aa621e3-1024x559.png\" alt=\"\" class=\"wp-image-34717\" style=\"aspect-ratio:1.8333512371540086;width:455px;height:auto\" srcset=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/34565e32-e773-4172-a9fc-81b66aa621e3-1024x559.png 1024w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/34565e32-e773-4172-a9fc-81b66aa621e3-300x164.png 300w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/34565e32-e773-4172-a9fc-81b66aa621e3-768x419.png 768w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/34565e32-e773-4172-a9fc-81b66aa621e3.png 1408w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Connection and Identification<\/strong>: When an operator powers on the tablet and connects, we establish a WebSocket connection. At that moment, the tablet is assigned a unique <strong>Socket ID<\/strong>. <\/li>\n\n\n\n<li><strong>Mapping in Redis<\/strong>: The technical ID alone isn\u2019t enough. We store an object in Redis that links the <code>Socket ID<\/code>to the business information: the <code>Staff ID<\/code> (who the operator is).<br\/> <br\/> <br\/> <\/li>\n\n\n\n<li><strong>Precise Targeting<\/strong>: When the backend needs to communicate a fault or a task, it doesn\u2019t \u201cshout\u201d to everyone. It queries Redis asking: \u201c<em>Give me the Socket ID of the operator working at Station B<\/em>.\u201d <\/li>\n\n\n\n<li><strong>Delivery<\/strong>: Once the ID is retrieved, the server sends the message exclusively to that tablet via the open WebSocket channel.<\/li>\n<\/ol>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<p>WebSockets, combined with tools like Redis, enable web applications to become <strong>true real-time applications<\/strong>, essential in manufacturing contexts. It\u2019s not just technology: it\u2019s <strong>operational efficiency<\/strong>, reduced downtime, and greater control over production.<br\/> <br\/> <br\/> <\/p>\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<ol class=\"wp-block-footnotes\"><li id=\"8c5f00ea-b727-4d12-ab60-ae0e4c0afbf6\"><strong>Redis (REmote DIctionary Server)<\/strong> is an ultra-fast, open-source in-memory database, primarily used as a cache or message broker. It stores data directly in RAM (main memory) rather than on disk, allowing responses in just a few microseconds. It operates on a key-value model, making it ideal for speeding up applications, managing sessions, or handling leaderboards.    <a href=\"#8c5f00ea-b727-4d12-ab60-ae0e4c0afbf6-link\" aria-label=\"Jump to footnote reference 1\">\u21a9\ufe0e<\/a><\/li><\/ol>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WebSocket and Redis are revolutionizing web apps: instant updates, targeted notifications, and real-time coordination between operators and machines, with no downtime.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":"[{\"id\":\"8c5f00ea-b727-4d12-ab60-ae0e4c0afbf6\",\"content\":\"<strong>Redis (REmote DIctionary Server)<\\\/strong> is an ultra-fast, open-source in-memory database, primarily used as a cache or message broker. It stores data directly in RAM (main memory) rather than on disk, allowing responses in just a few microseconds. It operates on a key-value model, making it ideal for speeding up applications, managing sessions, or handling leaderboards.   \"}]"},"categories":[160],"tags":[],"class_list":["post-34722","post","type-post","status-publish","format-standard","hentry","category-digital-transformation-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Machines and operators always in sync - AzzurroDigitale<\/title>\n<meta name=\"description\" content=\"WebSocket and Redis make web apps instant and responsive, enhancing efficiency and real-time communication.\" \/>\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.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Machines and operators always in sync - AzzurroDigitale\" \/>\n<meta property=\"og:description\" content=\"WebSocket and Redis make web apps instant and responsive, enhancing efficiency and real-time communication.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/\" \/>\n<meta property=\"og:site_name\" content=\"AzzurroDigitale\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/azzurrodigitale\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-28T16:22:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-29T11:56:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/websocket.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sofia Cominato\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sofia Cominato\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Machines and operators always in sync - AzzurroDigitale","description":"WebSocket and Redis make web apps instant and responsive, enhancing efficiency and real-time communication.","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.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/","og_locale":"en_US","og_type":"article","og_title":"Machines and operators always in sync - AzzurroDigitale","og_description":"WebSocket and Redis make web apps instant and responsive, enhancing efficiency and real-time communication.","og_url":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/","og_site_name":"AzzurroDigitale","article_publisher":"https:\/\/www.facebook.com\/azzurrodigitale","article_published_time":"2026-01-28T16:22:09+00:00","article_modified_time":"2026-01-29T11:56:40+00:00","og_image":[{"width":2560,"height":1440,"url":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/websocket.jpg","type":"image\/jpeg"}],"author":"Sofia Cominato","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sofia Cominato","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#article","isPartOf":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/"},"author":{"name":"Sofia Cominato","@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/person\/4d2d52ca7760d6f0ae9fe66dfc94a78c"},"headline":"Machines and operators always in sync: real-time notifications with WebSocket","datePublished":"2026-01-28T16:22:09+00:00","dateModified":"2026-01-29T11:56:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/"},"wordCount":675,"publisher":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#organization"},"image":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#primaryimage"},"thumbnailUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1.png","articleSection":["Digital Transformation"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/","url":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/","name":"Machines and operators always in sync - AzzurroDigitale","isPartOf":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#primaryimage"},"image":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#primaryimage"},"thumbnailUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1.png","datePublished":"2026-01-28T16:22:09+00:00","dateModified":"2026-01-29T11:56:40+00:00","description":"WebSocket and Redis make web apps instant and responsive, enhancing efficiency and real-time communication.","breadcrumb":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#primaryimage","url":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1.png","contentUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/5ccc6e4f-729f-476b-8494-5ce3be3457d1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.azzurrodigitale.com\/en\/machines-and-operators-always-in-sync-real-time-notifications-with-websocket\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.azzurrodigitale.com\/en\/"},{"@type":"ListItem","position":2,"name":"Machines and operators always in sync: real-time notifications with WebSocket"}]},{"@type":"WebSite","@id":"https:\/\/www.azzurrodigitale.com\/en\/#website","url":"https:\/\/www.azzurrodigitale.com\/en\/","name":"AzzurroDigitale","description":"","publisher":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.azzurrodigitale.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.azzurrodigitale.com\/en\/#organization","name":"AzzurroDigitale","url":"https:\/\/www.azzurrodigitale.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2024\/10\/logo-azzurro-digitale.svg","contentUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2024\/10\/logo-azzurro-digitale.svg","width":503,"height":64,"caption":"AzzurroDigitale"},"image":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/azzurrodigitale","https:\/\/www.youtube.com\/channel\/UC1NqEqHgcztU_2GIVr9Turg","https:\/\/www.linkedin.com\/company\/azzurrodigitale"]},{"@type":"Person","@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/person\/4d2d52ca7760d6f0ae9fe66dfc94a78c","name":"Sofia Cominato","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c7fbc3aefcb486c357c3137f8cf8d65d3676df01ab2b649830cdf7e2456f04e8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c7fbc3aefcb486c357c3137f8cf8d65d3676df01ab2b649830cdf7e2456f04e8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7fbc3aefcb486c357c3137f8cf8d65d3676df01ab2b649830cdf7e2456f04e8?s=96&d=mm&r=g","caption":"Sofia Cominato"}}]}},"_links":{"self":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/posts\/34722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/comments?post=34722"}],"version-history":[{"count":0,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/posts\/34722\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/media?parent=34722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/categories?post=34722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/tags?post=34722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}