看到了这些内容,感觉是不是很惊喜,全端支持
我们来看.NET Library,大概浏览一下,启动VS,新建一个WinForm程序,打开nuget,找到Client的对应版本:
Install-Package Microsoft.AspNet.SignalR.Client -Version 1.1.2
此时,我们的项目结构如下:
我们看到,相应的引用已经添加,只有2个类库就可以轻松实现客户端通信了,有空研究一下源码,反正是开源的,这样就可以根据源码开发出对应的C++版本,以便注册用户的客户端开发了。
此时打开From1.cs的代码,添加如下:
view sourceprint?01.namespace SignalRclient
02.{
03. public partial class Form1 : Form
04. {
05. HubConnection hubConnection;
06. IHubProxy hubProxy;
07. private delegate void AddTxt(string msg);
08. public Form1()
09. {
10. InitializeComponent();
11. hubConnection = new HubConnection('http://localhost:2154/signalr/hubs');
12. hubProxy = hubConnection.CreateHubProxy('pushHub');
13. hubProxy.On<string>('addMessage', (message) => this.Invoke(new AddTxt(Show), message));
14. hubConnection.Start().Wait();
15. }
16.
17. private void Show(string msg)
18. {
19. textBox2.Text += msg + '
20.';
21. }
22.
23. private void btnSubmit_Click(object sender, EventArgs e)
24. {
25. hubProxy.Invoke('send', textBox1.Text).Wait();
26. }
27. }
28.}
代码大概解释一下,
view sourceprint?1.hubConnection = new HubConnection('http://localhost:2154/signalr/hubs'); 初始化对我们IM服务器的集线器连接,
view sourceprint?
1.hubProxy = hubConnection.CreateHubProxy('pushHub');连接指定的集线器。
view sourceprint?
1.hubProxy.On<string>('addMessage', (message) => this.Invoke(new AddTxt(Show), message)); 配置我们服务端定义的匿名方法,并设置委托方法,以供调用。
view sourceprint?
1. hubProxy.Invoke('send', textBox1.Text).Wait(); send 是我们在服务端定义的发送方法,这里都是通过方法名调用的,有点类似js的eval了,是不是很强大。
2.
3.
4.代码很简单,也很方便的可以扩展使用,我们启动程序,看一下效果
view sourceprint?
1.
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有