SignalR的另类实现技巧
发布日期:2021-05-09 09:35:25 浏览次数:10 分类:博客文章

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

������������������������������������������������������������������������������������������WEB������������������SignalR���������������������������������������SignalR������������������������������������������B/S ��� C/S������������������������C/S���C/S���������

������B/S ��� C/S���������������ASP.NET ���  Winform  ���������������������������������������

������������������������������������������������������C#������������������������winform���������������

������������������������������������������������JS ���������������������������������winform���������������

���������������������������������:

ASP.NET ������������������

MyHub���

[HubName("myHub")]    public class MyHub : Hub    {        public static Action
SendMsgAction = null; public MyHub() { SendMsgAction = new Action
(SendMsg); } private void SendMsg(string msg) { Clients.All.RecvMsg(msg); } [HubMethodName("broadcast")] public void Broadcast(string msg) { if ("broadcast".Equals(Context.QueryString["identity"])) //��������������������������������������������������� { SendMsg(msg); } } public override System.Threading.Tasks.Task OnConnected() { return base.OnConnected(); } [HubMethodName("testConnect")] public void TestConnect() { System.Diagnostics.Debug.Write("ddd"); } }

ASP.NET ������������������������������������������������������������������������������

���������������

ASP.NET CS���������

protected void Button1_Click(object sender, EventArgs e)        {            if(MyHub.SendMsgAction!=null)            {                MyHub.SendMsgAction("���������������������-" + txtmsg.Value);            }        }

���������������������������������������MyHub���������������������������������������������������������������������������MyHub������������������������������MyHub���������������������SendMsg������������������ SendMsgAction���������������������������������������������������SendMsgAction������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������ASP.NET���������������������������������������������

                
���������������

���������������������������������������������MyHub���������������CSharp��������������������������� ������������������������������������JS���������������������JS���������������������������JS������������������������������������������������������������MyHub -->myHub���������������������������JS������������������Hub���������������HubName���HubMethodName������������������������������

winform������������������������������

1.������NuGet������SignalR.Client������������

2.Winform CS���������

public partial class Form1 : Form    {        private HubConnection connection = null;        private IHubProxy hubProxy = null;        private System.Threading.SynchronizationContext syncContext = null;        public Form1()        {            InitializeComponent();            syncContext = System.Threading.SynchronizationContext.Current;        }        private  void Form1_Load(object sender, EventArgs e)        {           CreateHubConnection();        }        ///         /// ������Hub���������������������        ///         private void CreateHubConnection()        {            connection = new HubConnection("http://localhost:3510/signalr");//SignalR���������������           hubProxy = connection.CreateHubProxy("MyHub");           hubProxy.On
("RecvMsg", RecvMsg); //������������������ connection.Start().Wait(); } ///
/// ������SignalR������������������ /// ///
private void RecvMsg(string msg) { syncContext.Post((o) => { textBox1.Text += string.Format("{0:yyyy-MM-dd HH:mm:ss}{1}\r\n", DateTime.Now, o); }, msg); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { connection.Dispose(); } private void button1_Click(object sender, EventArgs e) { hubProxy.Invoke("TestConnect");//������SignalR������������������ } }

���������������������������������������ASP.NET ���������������JS������������������������������������������������������������������������������������������������������HTTP���������������������

 ������C/S ��� C/S ���������������winform���winform������������������������������������B/S���������������������������SignalR self Host������������������OWIN self Host���������������������������������winform���������������������������winform���������������������������������������

winform������������������������

1.���������NuGet ������������Microsoft.AspNet.SignalR���Microsoft.AspNet.SignalR Self Host,���������������

 

2.������Startup������������������������������������SignalR������������������������ASP.NET������������Startup���������������

public class Startup    {        public void Configuration(IAppBuilder app)        {            app.MapSignalR();        }    }

3.������OWIN ������������������MyHub���������������������������������������

public partial class Form1 : Form    {        private IDisposable webHost = null;        public static Form1 Current = null;        public Form1()        {            InitializeComponent();            this.Text = "SignalR Winform���������";            Current = this;        }        private void Form1_Load(object sender, EventArgs e)        {            try            {                webHost = WebApp.Start
("http://localhost:3512"); label2.Text = "http://localhost:3512"; } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { try { webHost.Dispose(); } catch { } } private void button1_Click(object sender, EventArgs e) { if(MyHub.SendMsgAction!=null) { MyHub.SendMsgAction(textBox1.Text); } } public void ShowMsg(string msg) { this.Invoke(new MethodInvoker(() => { listBox1.Items.Add(msg); })); } }

������������������������������������������

1.������Microsoft.AspNet.SignalR������������������������Sciprts���������������������winform������������������������������

2.������Microsoft.AspNet.SignalR Self Host���������������������������������������������������������������������������������OWin���������������������������OWIN���������������������������������������������������OWIN���������������

 

上一篇:C# 实现AOP 的几种常见方式
下一篇:通过winform+模拟登录实现快速一键登录到人才招聘网站

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月14日 06时44分11秒