{"id":1672,"date":"2014-12-25T08:59:00","date_gmt":"2014-12-25T08:59:00","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=1672"},"modified":"2015-04-10T09:06:05","modified_gmt":"2015-04-10T09:06:05","slug":"asp-net-signalr-persistent-connection-example-part-1","status":"publish","type":"post","link":"https:\/\/www.rezafaisal.net\/?p=1672","title":{"rendered":"ASP.NET SignalR : Persistent Connection Example Part 1"},"content":{"rendered":"<p>Pada bagian berikut ini akan dipaparkan tahap-tahap implementasi ASP.NET SignalR 2 pada aplikasi web dengan menggunakan model komunikasi Persistent.<\/p>\n<p>{<strong><em>Membuat Project<\/em><\/strong>}<\/p>\n<p>Untuk mencoba model komunikasi ini dibuat project dengan nama HelloPersistent dengan cara yang sama seperti yang telah dilakukan pada bagian sebelumnya yang dapat dilihat pada posting <a href=\"http:\/\/www.rezafaisal.net\/?p=1653\">ASP.NET SignalR : Hub Communication Model Examples Part 1<\/a>.&#160; Langkah selanjutnya adalah membuat SignalR Persistent Connection Class (v2) dengan nama HelloWorld. Berikut adalah kode dari class ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:f1bc7988-70d0-4861-b499-fac5a693e982\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">\n<pre style=\" width: 550px; height: 300px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #008080;\"> 1<\/span> <span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System;\n<\/span><span style=\"color: #008080;\"> 2<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Collections.Generic;\n<\/span><span style=\"color: #008080;\"> 3<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Linq;\n<\/span><span style=\"color: #008080;\"> 4<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Threading.Tasks;\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Web;\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> Microsoft.AspNet.SignalR;\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">namespace<\/span><span style=\"color: #000000;\"> HelloPersistent\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"color: #000000;\">{\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">public<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">class<\/span><span style=\"color: #000000;\"> HelloWorld : PersistentConnection\n<\/span><span style=\"color: #008080;\">11<\/span> <span style=\"color: #000000;\">    {\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">protected<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">override<\/span><span style=\"color: #000000;\"> Task OnConnected(IRequest request, <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> connectionId)\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">14<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">return<\/span><span style=\"color: #000000;\"> Connection.Send(connectionId, <\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">Hello World! on <\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> DateTime.Now.ToString() <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">&lt;br\/&gt;<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">15<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">16<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">17<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">protected<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">override<\/span><span style=\"color: #000000;\"> Task OnReceived(IRequest request, <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> connectionId, <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> data)\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">19<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">return<\/span><span style=\"color: #000000;\"> Connection.Broadcast(data <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> DateTime.Now.ToString() <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">&lt;br\/&gt;<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">20<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">21<\/span> <span style=\"color: #000000;\">    }\n<\/span><span style=\"color: #008080;\">22<\/span> <span style=\"color: #000000;\">}<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<\/p>\n<p>Selanjutnya membuat OWIN Startup Class dengan nama Startup.cs dengan isi yang telah dimodifikasi menjadi seperti berikut ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:44eab967-7e24-4185-8ee7-f19a10a9d06e\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">\n<pre style=\" width: 550px; height: 300px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #008080;\"> 1<\/span> <span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System;\n<\/span><span style=\"color: #008080;\"> 2<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Threading.Tasks;\n<\/span><span style=\"color: #008080;\"> 3<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> Microsoft.Owin;\n<\/span><span style=\"color: #008080;\"> 4<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> Owin;\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #000000;\">[assembly: OwinStartup(<\/span><span style=\"color: #0000FF;\">typeof<\/span><span style=\"color: #000000;\">(HelloPersistent.Startup))]\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">namespace<\/span><span style=\"color: #000000;\"> HelloPersistent\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"color: #000000;\">{\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">public<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">class<\/span><span style=\"color: #000000;\"> Startup\n<\/span><span style=\"color: #008080;\">11<\/span> <span style=\"color: #000000;\">    {\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">public<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">void<\/span><span style=\"color: #000000;\"> Configuration(IAppBuilder app)\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">14<\/span> <span style=\"color: #000000;\">            app.MapSignalR<\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">HelloWorld<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">\/echo<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">15<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">16<\/span> <span style=\"color: #000000;\">    }\n<\/span><span style=\"color: #008080;\">17<\/span> <span style=\"color: #000000;\">}\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"color: #000000;\"><\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<p>{<strong><em>Menulis Kode Program<\/em><\/strong>}<\/p>\n<p>Berikut ini adalah kode untuk implementasi Persistent Connection pada client yang dibuat pada file index.html.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:f34336ac-d655-4b1e-a0cb-1a5a580e6938\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">\n<pre style=\" width: 550px; height: 300px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #008080;\"> 1<\/span> <span style=\"color: #0000FF;\">&lt;!<\/span><span style=\"color: #FF00FF;\">DOCTYPE html<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 2<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">html <\/span><span style=\"color: #FF0000;\">xmlns<\/span><span style=\"color: #0000FF;\">=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 3<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">head<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 4<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">title<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">Hello World! with SignalR<\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">title<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">script <\/span><span style=\"color: #FF0000;\">src<\/span><span style=\"color: #0000FF;\">=&quot;.\/Scripts\/jquery-1.10.2.min.js&quot;<\/span><span style=\"color: #0000FF;\">&gt;&lt;\/<\/span><span style=\"color: #800000;\">script<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">script <\/span><span style=\"color: #FF0000;\">src<\/span><span style=\"color: #0000FF;\">=&quot;.\/Scripts\/jquery.signalR-2.1.2.min.js&quot;<\/span><span style=\"color: #0000FF;\">&gt;&lt;\/<\/span><span style=\"color: #800000;\">script<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">script <\/span><span style=\"color: #FF0000;\">type<\/span><span style=\"color: #0000FF;\">=&quot;text\/javascript&quot;<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">        $(document).ready(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> () {\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            <\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">var<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> persistent <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">=<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> $.connection(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">\/echo<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">11<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            persistent.received(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> (data) {\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                $(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">#AddText<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">).append(data);\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            });\n<\/span><span style=\"color: #008080;\">14<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">15<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            persistent.start().done(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> () {\n<\/span><span style=\"color: #008080;\">16<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                $(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">#SubmitButton<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">).click(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> () {\n<\/span><span style=\"color: #008080;\">17<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                    persistent.send(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&quot;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Hello World Clicked<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&quot;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                });\n<\/span><span style=\"color: #008080;\">19<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            });\n<\/span><span style=\"color: #008080;\">20<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">        });\n<\/span><span style=\"color: #008080;\">21<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">script<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">22<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">head<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">23<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">body<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">24<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">div <\/span><span style=\"color: #FF0000;\">id<\/span><span style=\"color: #0000FF;\">=&quot;AddText&quot;<\/span><span style=\"color: #0000FF;\">&gt;&lt;\/<\/span><span style=\"color: #800000;\">div<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">25<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">input <\/span><span style=\"color: #FF0000;\">type<\/span><span style=\"color: #0000FF;\">=&quot;button&quot;<\/span><span style=\"color: #FF0000;\"> id<\/span><span style=\"color: #0000FF;\">=&quot;SubmitButton&quot;<\/span><span style=\"color: #FF0000;\"> value<\/span><span style=\"color: #0000FF;\">=&quot;Say Hello&quot;<\/span><span style=\"color: #FF0000;\"> <\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">26<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">body<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">27<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">html<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">28<\/span> <span style=\"color: #000000;\"><\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<p>{<strong><em>Uji Coba<\/em><\/strong>}<\/p>\n<p>Seperti halnya uji coba yang dilakukan pada bahasan Hello World pada bagian Hub Connection, hasil yang didapat pada kode di atas tidak berbeda jauh. Secara tampilan dapat dilihat pada gambar di bawah ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image25.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image_thumb25.png\" width=\"548\" height=\"319\" \/><\/a><\/p>\n<p>Selamat mencoba :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada bagian berikut ini akan dipaparkan tahap-tahap implementasi ASP.NET SignalR 2 pada aplikasi web dengan menggunakan model komunikasi Persistent. {Membuat Project} Untuk mencoba model komunikasi ini dibuat project dengan nama HelloPersistent dengan cara yang sama seperti yang telah dilakukan pada&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[68,132],"class_list":["post-1672","post","type-post","status-publish","format-standard","hentry","category-softwaredev","tag-asp-net","tag-signalr"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-qY","_links":{"self":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1672"}],"version-history":[{"count":1,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1672\/revisions"}],"predecessor-version":[{"id":1673,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1672\/revisions\/1673"}],"wp:attachment":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}