วันจันทร์ที่ 1 กันยายน พ.ศ. 2557

SignalR ตอนที่ 2

เริ่มต้น ศึกษา SignalR ผ่าน Persistent Connections

Persistent Connections คืออะไร ?
Persistent Connections คือ lower-level API ที่ทาง .NET สร้างขึ้นมาเพื่อติดต่อกันแบบใกล้ชิด โดยติดต่อกันในระดับชั้น (layer)ระหว่าง client กับ server แต่เนื่องจาก API ตัวนี้อยู่ในระดับ lower-level จึงไม่เหมาะเอามาใช้งานที่ complex หากต้องการนำไปใช้งานจริง ผู้เขียนแนะนำว่าให้ใช้ Hubs ในการติดต่อจะดีกว่า ส่วนสำหรับ Hubs นั้นผู้เขียนจะเขียนแนะนำในบทความ SignalR ตอนนที่ 3 โปรดติดตามต่อไป เรากลับเข้าเรื่อง Persistent Connections กันดีกว่า มาทำความรู้จักกัน ถ้าจะเริ่มเขียน ใช้งาน SignalR ควรจะทำความรู้จัก กับ เจ้าตัวนี้ก่อน  เพราะการเขียน เชื่อมกัน ง่ายและไม่ซับซ้อน เข้าใจโดยง่าย  โดยตัวอย่างที่จะแสดง จะแสดง การเชื่อมต่อ ระหว่าง หน้า Web และ หน้า Application  มาเริ่มกันเลยดีกว่า

  1. เริ่มจากสร้างโปรเจ็ต เป็นแบบ Web Empty ก่อน แล้วเข้าไป Nuget
  2. Download Microsoft.AspNet.SignalR มาติดที่เครื่องเรา
  3. Add new item ชื่อว่า OwinStartup เข้ามา กำหนด เป็น app.MapSignalR<ChatConnection>("/chat");
  4. สร้าง class chat ขึ้นมา เพื่อคอยจัดการ กับ Message ที่ส่งมาจาก Client ต่างๆๆ (web and app) มาจัดการ command ที่ใช้ในการส่งหากัน โดยอาศัย javascript <script> $(function () {
var connection = $.connection("/chat");

connection.start().done(function () {

console.log("Connected");

$("#chatWindow").val("Connected\n");

$("#sendButton").click(function () {

connection.send($("#messageTextBox").val());

$("#messageTextBox").val("");

});

});

connection.received(function (data) {

$("#chatWindow").val($("#chatWindow").val() + data + "\n");

});

});
มาจัดการฝั่ง App สร้างโปรเจ็ตขึ้นมาใหม่ เป็นแบบ Console ล่ะกัน

เข้า Nuget download Microsoft.AspNet.SignalR.Client

แล้วเขียน CODE ดังนี้ // Connect to the service var connection = new Connection("http://localhost:47338/chat");
// Print the message when it comes in
connection.Received += data => Console.WriteLine(data);
// Start the connection
connection.Start().ContinueWith(t => Console.WriteLine("Connected")).Wait();
string line = null;
while ((line = Console.ReadLine()) != null)
{
// Send a message to the server
connection.Send(line).Wait();
}

เป็นอันเสรฦ็จ พิธี เด๋วว่างๆ จะ up รูปให่นะ ใครตามไม่ทันยังไง เขียน comment ทิ้งไว้ล่ะกัน จะปรับปรุงให้นะครับ



บายไปล่ะ