{"id":1694,"date":"2015-01-05T09:17:00","date_gmt":"2015-01-05T09:17:00","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=1694"},"modified":"2015-04-10T09:23:23","modified_gmt":"2015-04-10T09:23:23","slug":"asp-net-signalr-aplikasi-real-time-windows-phone","status":"publish","type":"post","link":"http:\/\/www.rezafaisal.net\/?p=1694","title":{"rendered":"ASP.NET SignalR : Aplikasi Real-Time Windows Phone"},"content":{"rendered":"<p>Pada bagian ini akan akan dijelaskan bagaimana membuat aplikasi real-time dengan memanfaatkan model komunikasi Hub pada server dan menggunakan platform Windows Phone sebagai client.<\/p>\n<p>{<strong><em>Membuat Project<\/em><\/strong>}<\/p>\n<p>Untuk menambahkan project dapat dilakukan seperti cara yang sebelumnya telah dilakukan yaitu klik kanan pada Solution kemudian pilih Add &gt; New Project. Kemudian pilh bahasa yang digunakan Visual C# &gt; Store Apps &gt; Windows Phone Apps.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image28.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_thumb28.png\" width=\"548\" height=\"349\" \/><\/a><\/p>\n<p>Pada template pilih Blank App (Windows Phone Silverlight) kemudian isi ClientWinPhone pada kolom Name dan selanjutnya klik tombol OK.<\/p>\n<p>Pada window selanjutnya pilih versi OS yang digunakan yaitu Windows Phone 8.1, kemudian klik tombol OK.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image29.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_thumb29.png\" width=\"465\" height=\"213\" \/><\/a><\/p>\n<p>Dan hasilnya dapat dilihat terdapat project berikut ini pada solution.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image30.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_thumb30.png\" width=\"312\" height=\"351\" \/><\/a><\/p>\n<p>Langkah selanjutnya adalah menambahkan package Microsoft ASP.NET SignalR .NET Client pada project ini dengan cara klik kanan pada project ini kemudian pilih Manage NuGet Packages.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image31.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_thumb31.png\" width=\"548\" height=\"364\" \/><\/a><\/p>\n<p>Untuk mendapatkan daftar seperti di atas, ketikkan kata kunci signalr pada kolom pencarian yang ada pada sebelah kanan atas. Kemudian klik Microsoft ASP.NET SignalR .NET Client kemudian klik tombol Install. Maka akan dilakukan proses download paket tersebut dan setelah selesai maka akan dilakukan proses installasi paket tersebut.<\/p>\n<p>Hasilnya dapat dilihat pada bagian Reference yang ada pada project ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image32.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_thumb32.png\" width=\"240\" height=\"327\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<p>{<strong><em>Menulis Kode<\/em><\/strong>}<\/p>\n<p>Langkah selanjutnya adalah menulis kode program untuk membuat aplikasi mobile chat real-time. Untuk antarmuka aplikasi ini dibuat seperti pada gambar berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image33.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_thumb33.png\" width=\"548\" height=\"394\" \/><\/a><\/p>\n<p>Untuk membuat antarmuka seperti itu digunakan kode berikut ini.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:c9c1126e-47e9-4f50-9623-a3770e42c995\" 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: 450px;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: #800000;\">phone:PhoneApplicationPage\n<\/span><span style=\"color: #008080;\"> 2<\/span> <span style=\"color: #800000;\">    <\/span><span style=\"color: #FF0000;\">x:Class<\/span><span style=\"color: #0000FF;\">=&quot;ClientWinPhone.MainPage&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 3<\/span> <span style=\"color: #FF0000;\">    xmlns<\/span><span style=\"color: #0000FF;\">=&quot;http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 4<\/span> <span style=\"color: #FF0000;\">    xmlns:x<\/span><span style=\"color: #0000FF;\">=&quot;http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #FF0000;\">    xmlns:phone<\/span><span style=\"color: #0000FF;\">=&quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #FF0000;\">    xmlns:shell<\/span><span style=\"color: #0000FF;\">=&quot;clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #FF0000;\">    xmlns:d<\/span><span style=\"color: #0000FF;\">=&quot;http:\/\/schemas.microsoft.com\/expression\/blend\/2008&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #FF0000;\">    xmlns:mc<\/span><span style=\"color: #0000FF;\">=&quot;http:\/\/schemas.openxmlformats.org\/markup-compatibility\/2006&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"color: #FF0000;\">    mc:Ignorable<\/span><span style=\"color: #0000FF;\">=&quot;d&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"color: #FF0000;\">    FontFamily<\/span><span style=\"color: #0000FF;\">=&quot;{StaticResource PhoneFontFamilyNormal}&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\">11<\/span> <span style=\"color: #FF0000;\">    FontSize<\/span><span style=\"color: #0000FF;\">=&quot;{StaticResource PhoneFontSizeNormal}&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\">12<\/span> <span style=\"color: #FF0000;\">    Foreground<\/span><span style=\"color: #0000FF;\">=&quot;{StaticResource PhoneForegroundBrush}&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\">13<\/span> <span style=\"color: #FF0000;\">    SupportedOrientations<\/span><span style=\"color: #0000FF;\">=&quot;Portrait&quot;<\/span><span style=\"color: #FF0000;\"> Orientation<\/span><span style=\"color: #0000FF;\">=&quot;Portrait&quot;<\/span><span style=\"color: #FF0000;\">\n<\/span><span style=\"color: #008080;\">14<\/span> <span style=\"color: #FF0000;\">    shell:SystemTray.IsVisible<\/span><span style=\"color: #0000FF;\">=&quot;True&quot;<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">15<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">phone:PhoneApplicationPage<\/span><span style=\"color: #FF0000;\">.ApplicationBar<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">16<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">shell:ApplicationBar<\/span><span style=\"color: #0000FF;\">&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;\">shell:ApplicationBarIconButton <\/span><span style=\"color: #FF0000;\">x:Name<\/span><span style=\"color: #0000FF;\">=&quot;ApplicationBarIconButton_Send&quot;<\/span><span style=\"color: #FF0000;\"> Click<\/span><span style=\"color: #0000FF;\">=&quot;ApplicationBarIconButton_Send_Click&quot;<\/span><span style=\"color: #FF0000;\"> IconUri<\/span><span style=\"color: #0000FF;\">=&quot;\/Assets2\/AppBar\/new.png&quot;<\/span><span style=\"color: #FF0000;\"> Text<\/span><span style=\"color: #0000FF;\">=&quot;send&quot;<\/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;\">shell:ApplicationBar<\/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;\">phone:PhoneApplicationPage.ApplicationBar<\/span><span style=\"color: #0000FF;\">&gt;<\/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;\">    <\/span><span style=\"color: #008000;\">&lt;!--<\/span><span style=\"color: #008000;\">LayoutRoot is the root grid where all page content is placed<\/span><span style=\"color: #008000;\">--&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;\">Grid <\/span><span style=\"color: #FF0000;\">x:Name<\/span><span style=\"color: #0000FF;\">=&quot;LayoutRoot&quot;<\/span><span style=\"color: #FF0000;\"> Background<\/span><span style=\"color: #0000FF;\">=&quot;Transparent&quot;<\/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;\">Grid<\/span><span style=\"color: #FF0000;\">.RowDefinitions<\/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;\">RowDefinition <\/span><span style=\"color: #FF0000;\">Height<\/span><span style=\"color: #0000FF;\">=&quot;Auto&quot;<\/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;\">RowDefinition <\/span><span style=\"color: #FF0000;\">Height<\/span><span style=\"color: #0000FF;\">=&quot;*&quot;<\/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;\">Grid.RowDefinitions<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">27<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">28<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #008000;\">&lt;!--<\/span><span style=\"color: #008000;\">TitlePanel contains the name of the application and page title<\/span><span style=\"color: #008000;\">--&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">29<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">StackPanel <\/span><span style=\"color: #FF0000;\">x:Name<\/span><span style=\"color: #0000FF;\">=&quot;TitlePanel&quot;<\/span><span style=\"color: #FF0000;\"> Grid.Row<\/span><span style=\"color: #0000FF;\">=&quot;0&quot;<\/span><span style=\"color: #FF0000;\"> Margin<\/span><span style=\"color: #0000FF;\">=&quot;12,17,0,28&quot;<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">30<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">TextBlock <\/span><span style=\"color: #FF0000;\">Text<\/span><span style=\"color: #0000FF;\">=&quot;SignalR&quot;<\/span><span style=\"color: #FF0000;\"> Style<\/span><span style=\"color: #0000FF;\">=&quot;{StaticResource PhoneTextNormalStyle}&quot;<\/span><span style=\"color: #FF0000;\"> Margin<\/span><span style=\"color: #0000FF;\">=&quot;12,0&quot;<\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">31<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">TextBlock <\/span><span style=\"color: #FF0000;\">Text<\/span><span style=\"color: #0000FF;\">=&quot;chat room&quot;<\/span><span style=\"color: #FF0000;\"> Margin<\/span><span style=\"color: #0000FF;\">=&quot;9,-7,0,0&quot;<\/span><span style=\"color: #FF0000;\"> Style<\/span><span style=\"color: #0000FF;\">=&quot;{StaticResource PhoneTextTitle1Style}&quot;<\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">32<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">StackPanel<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">33<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">34<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #008000;\">&lt;!--<\/span><span style=\"color: #008000;\">ContentPanel - place additional content here<\/span><span style=\"color: #008000;\">--&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">35<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">Grid <\/span><span style=\"color: #FF0000;\">x:Name<\/span><span style=\"color: #0000FF;\">=&quot;ContentPanel&quot;<\/span><span style=\"color: #FF0000;\"> Grid.Row<\/span><span style=\"color: #0000FF;\">=&quot;1&quot;<\/span><span style=\"color: #FF0000;\"> Margin<\/span><span style=\"color: #0000FF;\">=&quot;12,0,12,0&quot;<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">36<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">Grid<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">37<\/span> <span style=\"color: #000000;\">                <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">Grid<\/span><span style=\"color: #FF0000;\">.RowDefinitions<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">38<\/span> <span style=\"color: #000000;\">                    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">RowDefinition <\/span><span style=\"color: #FF0000;\">Height<\/span><span style=\"color: #0000FF;\">=&quot;*&quot;<\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">39<\/span> <span style=\"color: #000000;\">                    <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">RowDefinition <\/span><span style=\"color: #FF0000;\">Height<\/span><span style=\"color: #0000FF;\">=&quot;Auto&quot;<\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">40<\/span> <span style=\"color: #000000;\">                <\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">Grid.RowDefinitions<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">41<\/span> <span style=\"color: #000000;\">                \n<\/span><span style=\"color: #008080;\">42<\/span> <span style=\"color: #000000;\">                <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">ListBox <\/span><span style=\"color: #FF0000;\">x:Name<\/span><span style=\"color: #0000FF;\">=&quot;ListBox_Chat&quot;<\/span><span style=\"color: #FF0000;\"> Grid.Row<\/span><span style=\"color: #0000FF;\">=&quot;0&quot;<\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">43<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">44<\/span> <span style=\"color: #000000;\">                <\/span><span style=\"color: #0000FF;\">&lt;<\/span><span style=\"color: #800000;\">TextBox <\/span><span style=\"color: #FF0000;\">x:Name<\/span><span style=\"color: #0000FF;\">=&quot;TextBox_Message&quot;<\/span><span style=\"color: #FF0000;\"> Grid.Row<\/span><span style=\"color: #0000FF;\">=&quot;1&quot;<\/span><span style=\"color: #FF0000;\"> <\/span><span style=\"color: #0000FF;\">\/&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">45<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">Grid<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">46<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">Grid<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">47<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">48<\/span> <span style=\"color: #000000;\">    <\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">Grid<\/span><span style=\"color: #0000FF;\">&gt;<\/span><span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">49<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">50<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">&lt;\/<\/span><span style=\"color: #800000;\">phone:PhoneApplicationPage<\/span><span style=\"color: #0000FF;\">&gt;<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<p>Dan berikut ini adalah kode dari MainPage.xaml.cs.<\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:60b9d4e6-49ca-4a3f-b9b2-0e4509ed1da1\" 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;\">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.Net;\n<\/span><span style=\"color: #008080;\"> 5<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Windows;\n<\/span><span style=\"color: #008080;\"> 6<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Windows.Controls;\n<\/span><span style=\"color: #008080;\"> 7<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> System.Windows.Navigation;\n<\/span><span style=\"color: #008080;\"> 8<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> Microsoft.Phone.Controls;\n<\/span><span style=\"color: #008080;\"> 9<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> Microsoft.Phone.Shell;\n<\/span><span style=\"color: #008080;\">10<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">using<\/span><span style=\"color: #000000;\"> ClientWinPhone.Resources;\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;\">using<\/span><span style=\"color: #000000;\"> Microsoft.AspNet.SignalR.Client;\n<\/span><span style=\"color: #008080;\">13<\/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;\">14<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">15<\/span> <span style=\"color: #000000;\"><\/span><span style=\"color: #0000FF;\">namespace<\/span><span style=\"color: #000000;\"> ClientWinPhone\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;\">public<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">partial<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">class<\/span><span style=\"color: #000000;\"> MainPage : PhoneApplicationPage\n<\/span><span style=\"color: #008080;\">18<\/span> <span style=\"color: #000000;\">    {\n<\/span><span style=\"color: #008080;\">19<\/span> <span style=\"color: #000000;\">        HubConnection hubConnection;\n<\/span><span style=\"color: #008080;\">20<\/span> <span style=\"color: #000000;\">        IHubProxy hubProxy;\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><span style=\"color: #008000;\">\/\/<\/span><span style=\"color: #008000;\"> Constructor<\/span><span style=\"color: #008000;\">\n<\/span><span style=\"color: #008080;\">23<\/span> <span style=\"color: #008000;\"><\/span><span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">public<\/span><span style=\"color: #000000;\"> MainPage()\n<\/span><span style=\"color: #008080;\">24<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">25<\/span> <span style=\"color: #000000;\">            InitializeComponent();\n<\/span><span style=\"color: #008080;\">26<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">27<\/span> <span style=\"color: #000000;\">            hubConnection <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">new<\/span><span style=\"color: #000000;\"> HubConnection(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">http:\/\/localhost:30526\/signalr\/hubs<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">28<\/span> <span style=\"color: #000000;\">            hubProxy <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> hubConnection.CreateHubProxy(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">HelloWorld<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">);\n<\/span><span style=\"color: #008080;\">29<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">30<\/span> <span style=\"color: #000000;\">            InitializeConnection();\n<\/span><span style=\"color: #008080;\">31<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">32<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">33<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">private<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">void<\/span><span style=\"color: #000000;\"> Connected()\n<\/span><span style=\"color: #008080;\">34<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">35<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">this<\/span><span style=\"color: #000000;\">.Dispatcher.BeginInvoke(() <\/span><span style=\"color: #000000;\">=&gt;<\/span><span style=\"color: #000000;\"> MessageBox.Show(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">User baru bergabung.<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">));\n<\/span><span style=\"color: #008080;\">36<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">37<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">38<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">private<\/span><span style=\"color: #000000;\"> async Task Show(<\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> user, <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> pesan)\n<\/span><span style=\"color: #008080;\">39<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">40<\/span> <span style=\"color: #000000;\">            <\/span><span style=\"color: #0000FF;\">this<\/span><span style=\"color: #000000;\">.Dispatcher.BeginInvoke(() <\/span><span style=\"color: #000000;\">=&gt;<\/span><span style=\"color: #000000;\"> ListBox_Chat.Items.Add(user <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\"> : <\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #000000;\">+<\/span><span style=\"color: #000000;\"> pesan));\n<\/span><span style=\"color: #008080;\">41<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">42<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">43<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">private<\/span><span style=\"color: #000000;\"> async Task InitializeConnection()\n<\/span><span style=\"color: #008080;\">44<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">45<\/span> <span style=\"color: #000000;\">            hubProxy.On(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">connected<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">, Connected);\n<\/span><span style=\"color: #008080;\">46<\/span> <span style=\"color: #000000;\">            hubProxy.On<\/span><span style=\"color: #000000;\">&lt;<\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\">, <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\">&gt;<\/span><span style=\"color: #000000;\">(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">show<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">, (user, pesan) <\/span><span style=\"color: #000000;\">=&gt;<\/span><span style=\"color: #000000;\"> Show(user, pesan));\n<\/span><span style=\"color: #008080;\">47<\/span> <span style=\"color: #000000;\">            await hubConnection.Start();\n<\/span><span style=\"color: #008080;\">48<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">49<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">50<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">private<\/span><span style=\"color: #000000;\"> <\/span><span style=\"color: #0000FF;\">void<\/span><span style=\"color: #000000;\"> ApplicationBarIconButton_Send_Click(<\/span><span style=\"color: #0000FF;\">object<\/span><span style=\"color: #000000;\"> sender, EventArgs e)\n<\/span><span style=\"color: #008080;\">51<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">52<\/span> <span style=\"color: #000000;\">            SendMassage(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">WP User<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">, TextBox_Message.Text);\n<\/span><span style=\"color: #008080;\">53<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">54<\/span> <span style=\"color: #000000;\">\n<\/span><span style=\"color: #008080;\">55<\/span> <span style=\"color: #000000;\">        <\/span><span style=\"color: #0000FF;\">private<\/span><span style=\"color: #000000;\"> async Task SendMassage(<\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> user, <\/span><span style=\"color: #0000FF;\">string<\/span><span style=\"color: #000000;\"> pesan)\n<\/span><span style=\"color: #008080;\">56<\/span> <span style=\"color: #000000;\">        {\n<\/span><span style=\"color: #008080;\">57<\/span> <span style=\"color: #000000;\">            await hubProxy.Invoke(<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #800000;\">Send<\/span><span style=\"color: #800000;\">&quot;<\/span><span style=\"color: #000000;\">, user, pesan);\n<\/span><span style=\"color: #008080;\">58<\/span> <span style=\"color: #000000;\">            TextBox_Message.Text <\/span><span style=\"color: #000000;\">=<\/span><span style=\"color: #000000;\"> String.Empty;\n<\/span><span style=\"color: #008080;\">59<\/span> <span style=\"color: #000000;\">        }\n<\/span><span style=\"color: #008080;\">60<\/span> <span style=\"color: #000000;\">    }\n<\/span><span style=\"color: #008080;\">61<\/span> <span style=\"color: #000000;\">}\n<\/span><span style=\"color: #008080;\">62<\/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>Uji coba client ini diuji bersama dengan dua platform client lainnya yaitu web dan Windows Forms. Dapat dilihat pada gambar di bawah pesan yang dikirimkan salah satu client dapat ditampilkan pada semua client. Pada uji coba ini terlihat respon pada client Windows Phone lebih lama waktu tundanya sampai pesan ditampilkan.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2015\/04\/image34.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_thumb34.png\" width=\"548\" height=\"392\" \/><\/a><\/p>\n<p>Selamat mencoba :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada bagian ini akan akan dijelaskan bagaimana membuat aplikasi real-time dengan memanfaatkan model komunikasi Hub pada server dan menggunakan platform Windows Phone sebagai client. {Membuat Project} Untuk menambahkan project dapat dilakukan seperti cara yang sebelumnya telah dilakukan yaitu klik kanan&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,105],"class_list":["post-1694","post","type-post","status-publish","format-standard","hentry","category-softwaredev","tag-asp-net","tag-signalr","tag-windows-phone"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-rk","_links":{"self":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1694"}],"version-history":[{"count":1,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1694\/revisions"}],"predecessor-version":[{"id":1695,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/1694\/revisions\/1695"}],"wp:attachment":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1694"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}