{"id":1668,"date":"2014-12-13T08:54:00","date_gmt":"2014-12-13T08:54:00","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=1668"},"modified":"2015-04-11T01:30:28","modified_gmt":"2015-04-11T01:30:28","slug":"asp-net-signalr-hub-communication-model-examples-part-3","status":"publish","type":"post","link":"https:\/\/www.rezafaisal.net\/?p=1668","title":{"rendered":"ASP.NET SignalR : Hub Communication Model Examples Part 3"},"content":{"rendered":"<p>Pada bagian ini akan diperlihatkan uji coba untuk menambahkan class SignalR Hub Class (v2) baru pada project ini untuk memperlihatkan bagaimana menangani lebih dari class Hub.<\/p>\n<p>{<strong><em>Menulis Kode Program<\/em><\/strong>}<\/p>\n<p>Oleh karena itu pada bagian ini akan dibuat sebuah class Hub yang sangat sederhana seperti berikut ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:019ab993-acd2-4a24-9dd5-4d5f0bc95667\" 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.Web;\n<\/span><span style=\"color: #008080;\"> 5<\/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;\"> 6<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Threading;\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;\"> HelloSignalR\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;\"> TimerHub : Hub\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;\"> Knock()\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;\">while<\/span><span style=\"color: #000000;\"> (<\/span><span style=\"color: #0000FF;\">true<\/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;\">                Thread.Sleep(<\/span><span style=\"color: #800080;\">5000<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">17<\/span> <span style=\"color: #000000;\">                <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> waktu <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> DateTime.Now.ToString();\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"color: #000000;\">                Clients.All.doknock(waktu);\n<\/span><span style=\"color: #008080;\">19<\/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;\">}\n<\/span><span style=\"color: #008080;\">23<\/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>Jika method Knock dipanggil oleh client maka seperti yang dilihat pada isi dari method tersebut terjadi pengulangan tanpa henti dimana akan mengirimkan pesan ke semua client yang terkoneksi ke server setiap 5 detik.<\/p>\n<p>Berikut ini adalah isi dari halaman client yang memanfaatkan class Hub ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:0c2cf245-176a-42ed-ba37-fed57e562572\" 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: #000000;\">&lt;!<\/span><span style=\"color: #000000;\">DOCTYPE html<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 2<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">html xmlns<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">http:\/\/www.w3.org\/1999\/xhtml<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 3<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">head<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 4<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">title<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">Timer<\/span><span style=\"color: #000000;\">&lt;\/<\/span><span style=\"color: #000000;\">title<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">script src<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">.\/Scripts\/jquery-1.10.2.min.js<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">&gt;&lt;\/<\/span><span style=\"color: #000000;\">script<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">script src<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">.\/Scripts\/jquery.signalR-2.1.2.min.js<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">&gt;&lt;\/<\/span><span style=\"color: #000000;\">script<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">script src<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">.\/signalr\/hubs<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\"> type<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">text\/javascript<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">&gt;&lt;\/<\/span><span style=\"color: #000000;\">script<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">script type<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">text\/javascript<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"color: #000000;\">        $(document).ready(function () {\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"color: #000000;\">            var hub <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> $.connection.timerHub;\n<\/span><span style=\"color: #008080;\">11<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"color: #000000;\">            hub.client.doknock <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> function (waktu) {\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"color: #000000;\">                $(<\/span><span style=\"color: #800000;\">'<\/span><span style=\"color: #800000;\">#AddText<\/span><span style=\"color: #800000;\">'<\/span><span style=\"color: #000000;\">).append(waktu <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #800000;\">'<\/span><span style=\"color: #800000;\"> knock knock &lt;br \/&gt;<\/span><span style=\"color: #800000;\">'<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">14<\/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;\">            $.connection.hub.start().done(function () {\n<\/span><span style=\"color: #008080;\">17<\/span> <span style=\"color: #000000;\">                hub.server.knock();\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"color: #000000;\">            });\n<\/span><span style=\"color: #008080;\">19<\/span> <span style=\"color: #000000;\">        });\n<\/span><span style=\"color: #008080;\">20<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;\/<\/span><span style=\"color: #000000;\">script<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">21<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #000000;\">&lt;\/<\/span><span style=\"color: #000000;\">head<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">22<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">body<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">23<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #000000;\">div id<\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">AddText<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">&gt;&lt;\/<\/span><span style=\"color: #000000;\">div<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">24<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #000000;\">&lt;\/<\/span><span style=\"color: #000000;\">body<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">25<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #000000;\">&lt;\/<\/span><span style=\"color: #000000;\">html<\/span><span style=\"color: #000000;\">&gt;<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<p>Dari kode di atas dapat dilihat begitu koneksi berhasil maka client akan memanggil method Knock di server, kemudian di dalam method Knock di server terlihat ada pemanggilan fungsi doknock yang ada pada client.<\/p>\n<p>{<strong><em>Uji Coba<\/em><\/strong>}<\/p>\n<p>Di bawah ini dapat dilihat hasil dari halaman timer.html, terlihat pada halaman tersebut pesan ditampilkan setiap 5 detik.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image24.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"image\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image_thumb24.png\" width=\"548\" height=\"233\" \/><\/a><\/p>\n<p>Souce code lengkap yang telah ditunjukkan di atas dapat dilihat pada link berikut ini : <a title=\"https:\/\/github.com\/rezafaisal\/ASPNETSignalR\" href=\"https:\/\/github.com\/rezafaisal\/ASPNETSignalR\">https:\/\/github.com\/rezafaisal\/ASPNETSignalR<\/a><\/p>\n<p>Selamat mencoba :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada bagian ini akan diperlihatkan uji coba untuk menambahkan class SignalR Hub Class (v2) baru pada project ini untuk memperlihatkan bagaimana menangani lebih dari class Hub. {Menulis Kode Program} Oleh karena itu pada bagian ini akan dibuat sebuah class Hub&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1718,"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-1668","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwaredev","tag-asp-net","tag-signalr"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.rezafaisal.net\/wp-content\/uploads\/2014\/12\/signalr.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-qU","_links":{"self":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1668","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=1668"}],"version-history":[{"count":2,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1668\/revisions"}],"predecessor-version":[{"id":1726,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1668\/revisions\/1726"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/media\/1718"}],"wp:attachment":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1668"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1668"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}