{"id":1716,"date":"2015-01-06T09:31:00","date_gmt":"2015-01-06T09:31:00","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=1716"},"modified":"2015-04-10T09:33:22","modified_gmt":"2015-04-10T09:33:22","slug":"building-client-app-for-asp-net-signalr-with-windows-app-javascript","status":"publish","type":"post","link":"https:\/\/www.rezafaisal.net\/?p=1716","title":{"rendered":"Building Client App for ASP.NET SignalR with Windows App (Javascript)"},"content":{"rendered":"<p>Pada bagian ini akan diberikan contoh membuat aplikasi client pada platform Windows App dengan menggunakan bahasa pemrograman Javascript. Seperti yang telah diketahui pada platform ini dapat dibangun aplikasi dengan bahasa C# dan VB.NET selain Javascript.<\/p>\n<p>{<strong><em>Membuat Project<\/em><\/strong>}<\/p>\n<p>Langkah pertama untuk membuat project ini adalah dengan klik kanan pada solution kemudian pilih Add &gt; New Project. Kemudian pilih bahasa Javascript &gt; Store Apps &gt; Windows App &gt; Blank App (Windows). Kemudian pada kolom nama isi dengan ClientWinApp. Selanjutnya klik tombol OK.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image35.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_thumb35.png\" width=\"548\" height=\"350\" \/><\/a><\/p>\n<p>Langkah selanjutnya adalah menambahkan package SignalR client pada project ini dengan cara klik kanan pada project kemudian klik Manage NuGet Packages. Pada kolom pencarian di pojok kanan atas masukkan kata kunci signalr maka akan didapat daftar seperti pada gambar di bawah ini.<\/p>\n<p>Berbeda dengan kedua project sebelumnya yang memilih Microsoft ASP.NET SignalR .NET Client, pada project ini dipilih package Microsoft ASP.NET SignalR Javascript Client. Kemudian klik tombol Install.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image36.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_thumb36.png\" width=\"548\" height=\"365\" \/><\/a><\/p>\n<p>Setelah proses download dan installasi package tersebut selesai maka dapat dilihat pada project ini terdapat folder Scripts yang berisi file yang berisi file-file Javascript untuk implementasi SignalR client.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image37.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_thumb37.png\" width=\"311\" height=\"366\" \/><\/a><\/p>\n<p>Langkah selanjutnya adalah membuat project ini menjadi Startup Project dengan cara klik kanan pada project ini kemudian pilih Set as Startup Project. Hasilnya dapat dilihat pada bagian tool bar.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image38.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_thumb38.png\" width=\"548\" height=\"197\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<p>{<strong><em>Menulis Kode Program<\/em><\/strong>}<\/p>\n<p>Sebelum menulis kode program utama ada hal yang harus dilakukan, yaitu melakukan perubahan pada kode jQuery. Karena pada Windows App jika menggunakan script jQuery begitu saja akan didapati peringatan seperti berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image39.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_thumb39.png\" width=\"548\" height=\"98\" \/><\/a><\/p>\n<p>Walaupun peringatan tersebut tetap dapat membuat kode program yang berhubungan dengan SignalR pada client tetap berjalan dengan baik. Tetapi jika ingin menghilangkan peringatan tersebut maka perlu ada perubahan pada file script jQuery yang digunakan pada bagian berikut ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:a5444de5-749a-4874-8694-0a0d73db6ccd\" 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: 400px;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;\">jQuery.support <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> MSApp.execUnsafeLocalFunction(<\/span><span style=\"color: #0000FF;\">function<\/span><span style=\"color: #000000;\"> () {\n<\/span><span style=\"color: #008080;\"> 2<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">var<\/span><span style=\"color: #000000;\"> div <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> document.createElement( <\/span><span style=\"color: #000000;\">&quot;<\/span><span style=\"color: #000000;\">div<\/span><span style=\"color: #000000;\">&quot;<\/span><span style=\"color: #000000;\"> ),\n<\/span><span style=\"color: #008080;\"> 3<\/span> <span style=\"color: #000000;\">        documentElement <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> document.documentElement,\n<\/span><span style=\"color: #008080;\"> 4<\/span> <span style=\"color: #000000;\">        all,\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #000000;\">        a,\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #000000;\">        select,\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\">        opt,\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #000000;\">        input,\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"color: #000000;\">        marginDiv,\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"color: #000000;\">        support,\n<\/span><span style=\"color: #008080;\">11<\/span> <span style=\"color: #000000;\">        fragment,\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"color: #000000;\">        body,\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"color: #000000;\">        testElementParent,\n<\/span><span style=\"color: #008080;\">14<\/span> <span style=\"color: #000000;\">        testElement,\n<\/span><span style=\"color: #008080;\">15<\/span> <span style=\"color: #000000;\">        testElementStyle,\n<\/span><span style=\"color: #008080;\">16<\/span> <span style=\"color: #000000;\">        tds,\n<\/span><span style=\"color: #008080;\">17<\/span> <span style=\"color: #000000;\">        events,\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"color: #000000;\">        eventName,\n<\/span><span style=\"color: #008080;\">19<\/span> <span style=\"color: #000000;\">        i,\n<\/span><span style=\"color: #008080;\">20<\/span> <span style=\"color: #000000;\">        isSupported;\n<\/span><span style=\"color: #008080;\">21<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">22<\/span> <span style=\"color: #000000;\">    ... dan seterusnya ...\n<\/span><span style=\"color: #008080;\">23<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">24<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">return<\/span><span style=\"color: #000000;\"> support;\n<\/span><span style=\"color: #008080;\">25<\/span> <span style=\"color: #000000;\">});\n<\/span><span style=\"color: #008080;\">26<\/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>Selanjutnya adalah menulis kode program client SignalR dengan kode Javascript seperti berikut ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:e8d86341-0bf2-45ce-9d9e-002780e3ab32\" 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: 400px;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: #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;\">meta <\/span><span style=\"color: #FF0000;\">charset<\/span><span style=\"color: #0000FF;\">=&quot;utf-8&quot;<\/span><span style=\"color: #FF0000;\"> <\/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;\">title<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">ClientWinApp<\/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;\"> 6<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #008000;\">&lt;!--<\/span><span style=\"color: #008000;\"> WinJS references <\/span><span style=\"color: #008000;\">--&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">link <\/span><span style=\"color: #FF0000;\">href<\/span><span style=\"color: #0000FF;\">=&quot;\/\/Microsoft.WinJS.2.0\/css\/ui-dark.css&quot;<\/span><span style=\"color: #FF0000;\"> rel<\/span><span style=\"color: #0000FF;\">=&quot;stylesheet&quot;<\/span><span style=\"color: #FF0000;\"> <\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\"> 9<\/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;\/\/Microsoft.WinJS.2.0\/js\/base.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;\">10<\/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;\/\/Microsoft.WinJS.2.0\/js\/ui.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;\">11<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #008000;\">&lt;!--<\/span><span style=\"color: #008000;\"> ClientWinApp references <\/span><span style=\"color: #008000;\">--&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">link <\/span><span style=\"color: #FF0000;\">href<\/span><span style=\"color: #0000FF;\">=&quot;\/css\/default.css&quot;<\/span><span style=\"color: #FF0000;\"> rel<\/span><span style=\"color: #0000FF;\">=&quot;stylesheet&quot;<\/span><span style=\"color: #FF0000;\"> <\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">14<\/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;\/js\/default.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;\">15<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">16<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #008000;\">&lt;!--<\/span><span style=\"color: #008000;\"> SignalR references <\/span><span style=\"color: #008000;\">--&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">17<\/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.6.4.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;\">18<\/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;\">19<\/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;\">20<\/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;\">21<\/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;\"> connection <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">=<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> $.hubConnection(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">http:\/\/localhost:30526\/signalr\/hubs<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">22<\/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;\"> hubProxy <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">=<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> connection.createHubProxy(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">helloWorld<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">23<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">24<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            hubProxy.on(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">connected<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">, <\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> (user, pesan) {\n<\/span><span style=\"color: #008080;\">25<\/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;\"> msg <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">=<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">new<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> Windows.UI.Popups.MessageDialog(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&quot;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">User baru bergabung.<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&quot;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">, <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&quot;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">SignalR<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&quot;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">26<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                msg.showAsync();\n<\/span><span style=\"color: #008080;\">27<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                console.log(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">User baru bergabung.<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">28<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            });\n<\/span><span style=\"color: #008080;\">29<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">30<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            hubProxy.on(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">show<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">, <\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> (user, pesan) {\n<\/span><span style=\"color: #008080;\">31<\/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(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&lt;strong&gt; <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> user <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> :&lt;\/strong&gt; <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> pesan <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">&lt;br \/&gt;<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">32<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                console.log(user <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> : <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> pesan);\n<\/span><span style=\"color: #008080;\">33<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            });\n<\/span><span style=\"color: #008080;\">34<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">35<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">            connection.start()\n<\/span><span style=\"color: #008080;\">36<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                .done(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> ()\n<\/span><span style=\"color: #008080;\">37<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                {\n<\/span><span style=\"color: #008080;\">38<\/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;\">39<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                        hubProxy.invoke(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Send<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">, <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Win8 User<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">, $(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">#PesanChat<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">).val()).done(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> () {\n<\/span><span style=\"color: #008080;\">40<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                            console.log(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Send berhasil dieksekusi.<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">);\n<\/span><span style=\"color: #008080;\">41<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                        }).fail(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> (error) {\n<\/span><span style=\"color: #008080;\">42<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                            console.log(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Send gagal dieksekusi. Error: <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> error);\n<\/span><span style=\"color: #008080;\">43<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                        });\n<\/span><span style=\"color: #008080;\">44<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">45<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                        $(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">#PesanChat<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">).val(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">''<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">).focus();\n<\/span><span style=\"color: #008080;\">46<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                    });\n<\/span><span style=\"color: #008080;\">47<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">\n<\/span><span style=\"color: #008080;\">48<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                    console.log(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Terkoneksi, connection ID=<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> <\/span><span style=\"background-color: #F5F5F5; color: #000000;\">+<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> connection.id);\n<\/span><span style=\"color: #008080;\">49<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                })\n<\/span><span style=\"color: #008080;\">50<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">                .fail(<\/span><span style=\"background-color: #F5F5F5; color: #0000FF;\">function<\/span><span style=\"background-color: #F5F5F5; color: #000000;\"> () { console.log(<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">Koneksi tidak dapat dilakukan<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">'<\/span><span style=\"background-color: #F5F5F5; color: #000000;\">); });\n<\/span><span style=\"color: #008080;\">51<\/span> <span style=\"background-color: #F5F5F5; color: #000000;\">        });\n<\/span><span style=\"color: #008080;\">52<\/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;\">53<\/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;\">54<\/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;\">55<\/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;text&quot;<\/span><span style=\"color: #FF0000;\"> id<\/span><span style=\"color: #0000FF;\">=&quot;PesanChat&quot;<\/span><span style=\"color: #FF0000;\"> <\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">56<\/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;Send&quot;<\/span><span style=\"color: #FF0000;\"> <\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">57<\/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;\">58<\/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;\">59<\/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;\">60<\/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>{<strong><em>Uji Coba<\/em><\/strong>}<\/p>\n<p>Untuk melakukan uji coba client SignalR Windows App ini dapat dilakukan langsung pada local mechine dengan cara mengklik tombol ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image40.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_thumb40.png\" width=\"403\" height=\"67\" \/><\/a><\/p>\n<p>Tapi pada uji coba ini aplikasi yang dibuat akan menggunakan Simulator maka pilihan untuk menjalankan Windows App tersebut diganti menjadi seperti berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image41.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_thumb41.png\" width=\"407\" height=\"72\" \/><\/a><\/p>\n<p>Setelah pilihan diubah, selanjutnya klik tombol berupa segitiga berwarna hijau tersebut. Makan akan ditampilkan simulator seperti berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image42.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_thumb42.png\" width=\"548\" height=\"343\" \/><\/a><\/p>\n<p>Dari gambar dapat dilihat message box yang menyatakan aplikasi terkoneksi pada server. Setelah tombol Close pada message box diklik maka aplikasi ini siap digunakan untuk melakukan chat.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image43.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_thumb43.png\" width=\"548\" height=\"150\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image44.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_thumb44.png\" width=\"548\" height=\"341\" \/><\/a><\/p>\n<p>Selamat mencoba :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada bagian ini akan diberikan contoh membuat aplikasi client pada platform Windows App dengan menggunakan bahasa pemrograman Javascript. Seperti yang telah diketahui pada platform ini dapat dibangun aplikasi dengan bahasa C# dan VB.NET selain Javascript. {Membuat Project} Langkah pertama untuk&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,22,21],"class_list":["post-1716","post","type-post","status-publish","format-standard","hentry","category-softwaredev","tag-asp-net","tag-signalr","tag-windows-8","tag-windows-store-app"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-rG","_links":{"self":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1716","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=1716"}],"version-history":[{"count":1,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1716\/revisions"}],"predecessor-version":[{"id":1717,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1716\/revisions\/1717"}],"wp:attachment":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}