H5 WebSocket 如何和C#進行通訊

H5 WebSocket 如何和C#進行通訊

 

  HTML5做爲下一代的 Web 標準, 擁有許多引人注目的新特性,如 Canvas、本地存儲、多媒體編程接口、WebSocket 等。WebSocket 在瀏覽器和服務器之間提供了一個基於 TCP 鏈接的雙向通道。Web 開發人員能夠很是方便地使用 WebSocket 構建實時 web 應用。HTML5 WebSocket 的目的就是要取代輪詢和 Comet 技術,使客戶端瀏覽器具有像 C/S 架構下桌面系統的實時通信能力。 WebSocket 在數據傳輸的穩定性和數據傳輸量的大小方面,和輪詢以及 Comet 技術比較,具備很大的性能優點。html

     下面給出一個簡單的例子,來講明websocket如何進行先後臺交互:web

1 html頁面編程

首先判斷瀏覽器是否支持WebSocket,若是具備此特徵,則打開特定uri,進行數據交互。瀏覽器

複製代碼
 1 <html>
 2 <head>
 3     <script>
 4     var socket ;
 5     if ("WebSocket" in window) {
 6         //alert("WebSocket is supported by your Browser!");
 7         //open web socket
 8         var ws = new WebSocket("ws://localhost:8181/echo");
 9         socket = ws;
10         ws.onopen = function() {
11             // Web Socket is connected, send data using send()
12             // ws.send("Message from client");
13             //console.log('Message is sent...');
14         };
15         ws.onmessage = function(evt) {
16             var received_msg = evt.data;
17             //alert("Message is received...");
18            console.log("Server:"+evt.data);
19         };
20         ws.onclose = function() {
21             // websocket is closed.
22             alert("Connection is closed...");
23         };
24     } else {
25         //不支持WebSocket
26         alert("WebSocket not supported by your Browser!");
27     }
28     function login(){
29          socket.send("{\"uid\":\"admin\",\"pwd\":\"admin\"}");
30     }
31     </script>
32 </head>
33   
34 <body>
35   <button onclick="login();">login</button>
36 </body>
37 
38 </html>
複製代碼

2 C# websocket server服務器

複製代碼
 1 using System;
 2 using Fleck;
 3 using Newtonsoft.Json;
 4 namespace WebSocketNet
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10 
11             //Fleck
12             var server = new WebSocketServer("ws://0.0.0.0:8181");
13             server.Start(socket =>
14             {
15                 socket.OnOpen = () =>
16                 {
17                     Console.WriteLine("Open!");
18                     socket.Send("hello");
19                 };
20 
21                 socket.OnClose = () => Console.WriteLine("Close!");
22                 socket.OnMessage = message =>
23                 {
24                     Console.WriteLine(message);
25                     //嘗試用websocket進行登陸
26                     dynamic o = JsonConvert.DeserializeObject<user>(message);
27                     var pwd = o.pwd;
28                     var uid = o.uid;
29                     if (uid == "admin" && uid == "admin")
30                     {
31                         socket.Send("login success");
32                     }
33                     else
34                     {
35                         socket.Send("login fail");
36                     }
37 
38                 };
39 
40             });
41 
42             Console.ReadLine();
43         }
44     }
45    public class user
46     {
47         public string uid { get; set; }
48         public string pwd { get; set; }
49     }
50 }
複製代碼

3 運行websocket

水平有限,望各位園友不吝賜教!若是以爲不錯,請點擊推薦和關注! 
出處: http://www.cnblogs.com/isaboy/  聲明:本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
相關文章
相關標籤/搜索