signalr 实验代码

      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("http://localhost:1919/chat");        

     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("http://localhost:1919/chat");     

        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的。
 
 

posted on   荣锋亮  阅读(284)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示