H5 WebSocket 如何和C#进行通信
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/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


浙公网安备 33010602011771号