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 2013-10-24 20:29  荣锋亮  阅读(284)  评论(0编辑  收藏  举报

导航