{"id":1908,"date":"2023-06-15T09:26:58","date_gmt":"2023-06-15T09:26:58","guid":{"rendered":"http:\/\/waqar-arshad.com\/?p=1908"},"modified":"2023-06-15T09:26:58","modified_gmt":"2023-06-15T09:26:58","slug":"signalr-real-time-communication","status":"publish","type":"post","link":"http:\/\/waqar-arshad.com\/index.php\/2023\/06\/15\/signalr-real-time-communication\/","title":{"rendered":"SignalR &#8211; Real Time Communication"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"\" data-post-id=\"1908\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"\" data-post-id=\"1908\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-down\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\"><\/span>\r\n<\/div><\/div>\n<p><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.c-sharpcorner.com\/article\/introduction-to-signalr-with-net-core-part-one\/\" target=\"_blank\"><strong>Introduction To SignalR<\/strong><\/a><\/p>\n\n\n\n<p>&nbsp;Now in this article, we will see the implementation of SignalR with .NET core<\/p>\n\n\n\n<p>Software\u2019s requires to develop an application with SignalR on ASP.NET Core<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Node package manager(npm) &#8211;&nbsp;<em>https:\/\/www.npmjs.com\/get-npm<\/em><\/li>\n\n\n\n<li>.NET Core SDK 2.1 or later -https:\/\/www.microsoft.com\/net\/download\/archives<\/li>\n\n\n\n<li>Visual Studio 2017 (Version 15.7.3 or later)<\/li>\n<\/ul>\n\n\n\n<p>Let\u2019s create simple communication application using SignalR with ASP.NET Core<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>File &#8211; New &#8211; Project &#8211; Create New web application.<br><br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"542\" src=\"http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-63.png\" alt=\"\" class=\"wp-image-1909\" srcset=\"http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-63.png 940w, http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-63-300x173.png 300w, http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-63-768x443.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Then select Web Application.<br><br><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"691\" src=\"http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-64.png\" alt=\"\" class=\"wp-image-1910\" srcset=\"http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-64.png 940w, http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-64-300x221.png 300w, http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-64-768x565.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Next step is to download a SignalR module using a node package manager.<br><br><ul><li>npm init -y<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>npm install @aspnet\/signalr<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Copy signalr.js file from node installed location and copy in our project.<\/li>\n\n\n\n<li>Do not forget to include signalr.js file into your HTML Page script tag.<\/li>\n<\/ul>\n\n\n\n<p><strong>Create SignaR Hub<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Now to create a&nbsp;SignalR hub, a signalR hub is a&nbsp;class that inherits from Microsoft.ASpNetCore.SignalR.Hub.<br><br><\/li>\n\n\n\n<li>Let\u2019s create a method that can be accessed from JavaScript.<br><br><\/li>\n\n\n\n<li>To send the message to all clients, I have created \u201cSendMessage\u201d method and within this method, I will call the \u201cReceiveMessage\u201d method of the&nbsp;connected client.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li>using\u00a0Microsoft.AspNetCore.SignalR;\u00a0\u00a0<ol><li>using&nbsp;System.Threading.Tasks;&nbsp;&nbsp;<\/li><\/ol><ol><li>namespace&nbsp;CommunicationApp&nbsp;&nbsp;<\/li><\/ol><ol><li>{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;<strong>public<\/strong>&nbsp;<strong>class<\/strong>&nbsp;ChatHub&nbsp;:&nbsp;Hub&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>public<\/strong>&nbsp;async&nbsp;Task&nbsp;SendMessage(string&nbsp;user,&nbsp;string&nbsp;message)&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await&nbsp;Clients.All.SendAsync(&#8220;ReceiveMessage&#8221;,&nbsp;user,&nbsp;message);&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<\/li><\/ol>\n<ol class=\"wp-block-list\">\n<li>}&nbsp;&nbsp;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Next step is that we need to configure our project to handle the SignalR Request.<\/li>\n\n\n\n<li>So to configure SignalR in our project, we need to add signalR service to ConfigureService method of startup class.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li><strong>public<\/strong><strong>void<\/strong>\u00a0ConfigureServices(IServiceCollection\u00a0services)\u00a0\u00a0<ol><li>{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&#8230;.&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&#8230;.&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;services.AddSignalR();&nbsp;&nbsp;<\/li><\/ol>\n<ol class=\"wp-block-list\">\n<li>}&nbsp;&nbsp;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Also we need to configure the route to signalR hubs using UseSignalR method defined in configure method of startup class.<br><br><\/li>\n\n\n\n<li>This method(app.UseSignalR) adds SignalR to a middleware pipeline.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li><strong>public<\/strong><strong>void<\/strong>\u00a0Configure(IApplicationBuilder\u00a0app)\u00a0\u00a0<ol><li>{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;app.UseSignalR(routes&nbsp;=&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;routes.MapHub&lt;ChatHub&gt;(&#8220;\/chatHub&#8221;);&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app.UseMvc();&nbsp;&nbsp;<\/li><\/ol>\n<ol class=\"wp-block-list\">\n<li>}&nbsp;&nbsp;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>So by using JavaScript code, we call the server method called \u201cSendMessage\u201d and also we have registered ReceiveMessage method, which is usually called from the server to send the message to the client.<br><br><\/li>\n\n\n\n<li>Just create chat.js file under \u201cwwwroot\/js\u201d folder.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li><strong>const<\/strong>\u00a0connection\u00a0=\u00a0<strong>new<\/strong>\u00a0signalR.HubConnectionBuilder()\u00a0\u00a0<ol><li>&nbsp;&nbsp;&nbsp;&nbsp;.withUrl(&#8220;\/chatHub&#8221;)&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;.build();&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;<\/li><\/ol><ol><li>\/\/This&nbsp;method&nbsp;receive&nbsp;the&nbsp;message&nbsp;and&nbsp;Append&nbsp;to&nbsp;our&nbsp;list&nbsp;&nbsp;<\/li><\/ol><ol><li>connection.on(&#8220;ReceiveMessage&#8221;,&nbsp;(user,&nbsp;message)&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;<strong>const<\/strong>&nbsp;msg&nbsp;=&nbsp;message.replace(\/&amp;\/g,&nbsp;&#8220;&amp;&#8221;).replace(\/&lt;\/g,&nbsp;&#8220;&lt;&#8220;).replace(\/&gt;\/g,&nbsp;&#8220;&gt;&#8221;);&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;<strong>const<\/strong>&nbsp;encodedMsg&nbsp;=&nbsp;user&nbsp;+&nbsp;&#8221;&nbsp;::&nbsp;&#8221;&nbsp;+&nbsp;msg;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;<strong>const<\/strong>&nbsp;li&nbsp;=&nbsp;document.createElement(&#8220;li&#8221;);&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;li.textContent&nbsp;=&nbsp;encodedMsg;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&#8220;messagesList&#8221;).appendChild(li);&nbsp;&nbsp;<\/li><\/ol><ol><li>});&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;<\/li><\/ol><ol><li>connection.start().<strong>catch<\/strong>(err&nbsp;=&gt;&nbsp;console.error(err.toString()));&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;<\/li><\/ol><ol><li>\/\/Send&nbsp;the&nbsp;message&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;<\/li><\/ol><ol><li>document.getElementById(&#8220;sendMessage&#8221;).addEventListener(&#8220;click&#8221;,&nbsp;event&nbsp;=&gt;&nbsp;{&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;<strong>const<\/strong>&nbsp;user&nbsp;=&nbsp;document.getElementById(&#8220;userName&#8221;).value;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;<strong>const<\/strong>&nbsp;message&nbsp;=&nbsp;document.getElementById(&#8220;userMessage&#8221;).value;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;connection.invoke(&#8220;SendMessage&#8221;,&nbsp;user,&nbsp;message).<strong>catch<\/strong>(err&nbsp;=&gt;&nbsp;console.error(err.toString()));&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;event.preventDefault();&nbsp;&nbsp;<\/li><\/ol>\n<ol class=\"wp-block-list\">\n<li>});&nbsp; &nbsp;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Now replace the following code content in page\\index.cshtml file.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li>@page\u00a0\u00a0<ol><li>&lt;div&nbsp;<strong>class<\/strong>=&#8221;container&#8221;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;row&#8221;&gt;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;row&#8221;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-12&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-6&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-3&#8243;&gt;User&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-9&#8243;&gt;&lt;input&nbsp;type=&#8221;text&#8221;&nbsp;id=&#8221;userName&#8221;&nbsp;\/&gt;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-12&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-6&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-3&#8243;&gt;Message&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-md-9&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=&#8221;text&#8221;&nbsp;id=&#8221;userMessage&#8221;&nbsp;\/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=&#8221;button&#8221;&nbsp;id=&#8221;sendMessage&#8221;&nbsp;value=&#8221;Send&nbsp;Message&#8221;&nbsp;\/&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;row&#8221;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-12&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hr&nbsp;\/&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;row&#8221;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-6&#8243;&gt;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;<strong>class<\/strong>=&#8221;col-6&#8243;&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&nbsp;id=&#8221;messagesList&#8221;&gt;&lt;\/ul&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&lt;\/div&gt;&nbsp;&nbsp;<\/li><\/ol><ol><li>&lt;script&nbsp;src=&#8221;~\/lib\/signalr\/signalr.js&#8221;&gt;&lt;\/script&gt;&nbsp;&nbsp;<\/li><\/ol>\n<ol class=\"wp-block-list\">\n<li>&lt;script&nbsp;src=&#8221;~\/js\/chat.js&#8221;&gt;&lt;\/script&gt;&nbsp;&nbsp;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"501\" src=\"http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-65.png\" alt=\"\" class=\"wp-image-1911\" srcset=\"http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-65.png 940w, http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-65-300x160.png 300w, http:\/\/waqar-arshad.com\/wp-content\/uploads\/2023\/06\/image-65-768x409.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Introduction To SignalR &nbsp;Now in this article, we will see the implementation of SignalR with .NET core Software\u2019s requires to develop an application with SignalR on ASP.NET Core Let\u2019s create simple communication application using SignalR with ASP.NET Core Create SignaR Hub<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12,13,11,16,1],"tags":[],"class_list":["post-1908","post","type-post","status-publish","format-standard","hentry","category-asp-net","category-asp-net-core","category-csharp","category-real-time-communication","category-uncategorized"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"http:\/\/waqar-arshad.com\/index.php\/author\/waqar_29_1\/"},"uagb_comment_info":19,"uagb_excerpt":"Introduction To SignalR &nbsp;Now in this article, we will see the implementation of SignalR with .NET core Software\u2019s requires to develop an application with SignalR on ASP.NET Core Let\u2019s create simple communication application using SignalR with ASP.NET Core Create SignaR Hub","_links":{"self":[{"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/posts\/1908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/comments?post=1908"}],"version-history":[{"count":2,"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/posts\/1908\/revisions"}],"predecessor-version":[{"id":1913,"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/posts\/1908\/revisions\/1913"}],"wp:attachment":[{"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/media?parent=1908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/categories?post=1908"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/waqar-arshad.com\/index.php\/wp-json\/wp\/v2\/tags?post=1908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}