zoukankan      html  css  js  c++  java
  • 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 运行

  • 相关阅读:
    bzoj 3111 蚂蚁 动态规划
    bzoj3011 可并堆
    bzoj2693 莫比乌斯反演
    bzoj 2671 莫比乌斯反演
    bzoj2194 快速傅立叶之二 FFT
    bzoj1396&&2865 识别子串 后缀自动机+线段树
    安卓开发中使用ZXing生成解析二维码
    使用tencent协议发起临时会话
    使用zxing编写的二维码生成解析工具:QRCoder
    使用JavaScript获取浏览器Chrome版本信息
  • 原文地址:https://www.cnblogs.com/isaboy/p/websocket_html_web_csharp.html
Copyright © 2011-2022 走看看