H5 WebSocket 如何和C#进行通信
HTML5作为下一代的 Web 标准, 拥有许多引人注目的新特性,如 Canvas、本地存储、多媒体编程接口、WebSocket 等。WebSocket 在浏览器和服务器之间提供了一个基于 TCP 连接的双向通道。Web 开发人员可以非常方便地使用 WebSocket 构建实时 web 应用。HTML5 WebSocket 的目的就是要取代轮询和 Comet 技术,使客户端浏览器具备像 C/S 架构下桌面系统的实时通讯能力。 WebSocket 在数据传输的稳定性和数据传输量的大小方面,和轮询以及 Comet 技术比较,具有很大的性能优势。
下面给出一个简单的例子,来说明websocket如何进行前后台交互:
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 运行
水平有限,望各位园友不吝赐教!如果觉得不错,请点击推荐和关注!
出处:http://www.cnblogs.com/isaboy/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/isaboy/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。