博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
signalr 实验代码
阅读量:6032 次
发布时间:2019-06-20

本文共 1724 字,大约阅读时间需要 5 分钟。

      signalr 是.net环境下的比较方便的进行实时通信的框架,有好多益处,可以进行数据的实时发送,可以进行消息的实时推送,同时可以当做websocket使用,较好的是它的客户端API有好多版本的,可以实现跨平台的调用,同时API也是比较容易使用的。

   一下是演示的代码:

server 端的代码创建如下:

1,创建ASP.net MVC 空项目,项目结构如下 比较简单。

2,添加signalr API 的引用,如图:
3,创建类Startup 这是必须的同时也必须如下进行创建方法的名称:
       public void Configuration(IAppBuilder app)
        {
            
            app.MapConnection<MyConne>("/chat");
        }
 这个类在web 站点启动的时候就可以运行,可以进行调试试试。
4,创建MyConne 类这是进行持久通信的类 我写的比较简单:
public class MyConne:PersistentConnection
    {
        protected override System.Threading.Tasks.Task OnReceived(IRequest request, string connectionId, string data)
        {
            return Connection.Broadcast(data); // 这是消息进行广播的方法
        }
    }
以上是server的代码很简单也很少就可以运行了。
client的代码也是比较简单的没,我创建了两个一个是控制台的一个是winform的
控制台的代码如下:

  static void Main(string[] args)         {         

    var con = new Connection("");        

     con.Received += con_Received;    

         con.Start().Wait();        

     string line = string.Empty;           

  while ((line = Console.ReadLine())!=null)      

       {              

   con.Send(line);    

         }       

  }

        static void con_Received(string obj)     

    {         

    Console.WriteLine("recidef :"+obj);      

   }

有一点需要注意就是添加客户端API 的应用很简单如图:

winfrom 的代码也比较简单如下:

public partial class Form1 : Form     {   

      public delegate void Settextinfo(string obj);     

    public Form1()      

   {          

   InitializeComponent();    

     }       

  Connection con;        

private void button1_Click(object sender, EventArgs e)       

  {            

con = new Connection("");     

        con.Received += con_Received;    

         con.Start().Wait();      

   }

        void con_Received(string obj)      

   {         

    if (textBox1.InvokeRequired)       

      {             

    textBox1.BeginInvoke(new Settextinfo(Settext), obj);      

       }         

    else            

{             

    textBox1.Text = obj;      

       }             

       }     

    void Settext(string obj)

        {         

    textBox1.Text = "接收到的数据是:" + obj;    

     }       

  private void button2_Click(object sender, EventArgs e)     

    {          

   con.Send(textBox2.Text);    

     }    

}

界面如下:

运行的测试消息界面:
 

 发送的界面测试如图:

很方便吧,最主要的是你可以在web 中使用javascript进行调用,我们可以直接涉及一个网页的即时消息通讯。
唯一有一点不好的是对于server 端的.net framework 要求比较高是.net 4.5的。
 
 

转载地址:http://dmbhx.baihongyu.com/

你可能感兴趣的文章
Anaconda jupyter notebook 出现 kernel error 解决办法
查看>>
我对读计算机软件专业硕士的几点看法
查看>>
【枚举】bzoj1800 [Ahoi2009]fly 飞行棋
查看>>
用JS写CSS
查看>>
TOJ4537: n阶行列式
查看>>
算法刷题笔记-stack-四则运算
查看>>
3.16
查看>>
Linux下arp用法
查看>>
表单文件上传与文件下载
查看>>
jquery 中prop()的使用方法
查看>>
下午考
查看>>
WKWebView
查看>>
创建字符设备的三种方法
查看>>
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
数字通信原理笔记(一)---概述
查看>>