zoukankan      html  css  js  c++  java
  • 利用SignalR实现聊天室(进阶篇)

    实现web与窗体程序通信聊天

    在原来的基础上代码保持不变,窗体程序负责交互

     1   public partial class Form1 : Form
     2     {
     3         string url = "http://localhost:10319";
     4         HubConnection _conn;
     5         IHubProxy _proxy;
     6         string username = "wdd3";
     7         public Form1()
     8         {
     9             InitializeComponent();
    10             CheckForIllegalCrossThreadCalls = false;
    11            
    12         }
    13         private void Form1_Load(object sender, EventArgs e)
    14         {
    15             _conn = new HubConnection(url, true);
    16             _proxy = _conn.CreateHubProxy("MyHub");
    17             _conn.Start();
    18             setlogin();
    19         }
    20         private void setlogin()
    21         {
    22             _conn.StateChanged += new Action<StateChange>(tgt =>
    23             {
    24                 if (((StateChange)tgt).NewState == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
    25                 {
    26                     //客户端调用服务端的 Send() 方法,传入参数"Hello"         
    27                     _proxy.Invoke("SendLogin", "wdd3");
    28                 }
    29             });
    30 
    31             //定义客户端的方法sendMessage()(有两个string类型的参数,当服务端调用sendMessage,需要传入2个string类型参数),以这种格式定义方法服务端才能去调用
    32             _proxy.On<string>("sendMessage123", rebackdata);
    33             _proxy.On<string>("sendMessage_Persion", setmsg);
    34         }
    35 
    36       
    37 
    38         private void button1_Click(object sender, EventArgs e)
    39         {
    40 
    41           
    42         }
    43 
    44         public void rebackdata(string s)
    45         {
    46             textBox3.Text =s.ToString();
    47         }
    48         public void setmsg(string s)
    49         {
    50             textBox4.Text = s.ToString();
    51         }
    52 
    53         private void button2_Click(object sender, EventArgs e)
    54         {
    55             _proxy.Invoke("SendByGroup", username, textBox2.Text, textBox1.Text);
    56             //_conn.StateChanged += new Action<StateChange>(tgt =>
    57             //{
    58             //    if (((StateChange)tgt).NewState == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
    59             //    {
    60             //        //客户端调用服务端的 Send() 方法,传入参数"Hello"         
    61                    
    62             //    }
    63             //});
    64             
    65         }
    66     }
    View Code

    效果如下:

  • 相关阅读:
    http://www.cnblogs.com/fengyin/archive/2011/01/18/1938628.html 前端优化
    iframe中子父窗口互调的js方法
    Mydomain操作说明
    Struts中出现DispatchMapping[***] does not define a handler property 的解决办法
    MyEclipse 不编译了,无论怎么更改保存, classes目录下都是空的.
    checkstyle配置文件说明
    SQLite学习手册(数据类型)
    动态加载datagrid控件的一个问题
    sharepoint
    VS.net 的一个bug
  • 原文地址:https://www.cnblogs.com/CarzySunshine/p/14047816.html
Copyright © 2011-2022 走看看