如何搭建SignalR服务器和客户端(c#)
来源:互联网 发布:北京行知实验小学咋样 编辑:程序博客网 时间:2024/06/07 12:00
SignalRASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信。什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相通知消息及调用方法,当然这是实时操作的。
SignalR当然也提供了非常简单易用的高阶API,使服务器端可以单个或批量调用客户端上的JavaScript函数,客户端也可以调用服务器端的方法,并且非常方便地进行连接管理,例如客户端连接到服务器端,或断开连接,客户端分组,以及客户端授权,使用SignalR都非常容易实现。
**SignalR服务器可以搭载IISExpress、SelfHost、Nginx,客户端可以为winform、console控制台。
本文将分三种服务进行实测,测试传输数据的效率**
1、搭载IISExpress服务器
服务端搭建
1、创建ASP.NET Web应用程序项目,选择MVC模板,如下图
2、添加引用
通过NuGet下载Microsoft.AspNet.SignalR
3、新建MyHub.cs文件,即我们自己服务中的集线器
using System;using System.Collections.Generic;using System.Linq;using System.Threading.Task;using System.Web;using Microsoft.AspNet.SignalR;using Microsoft.AspNet.SignalR.Hubs;using System.Text;public class MyHub:Hub{ readonly IHubContext _hubContext; public MyHub():base() { _hubContext = GlobalHost.ConnectionManager.GetHubContext<ServerHub>(); } //Clients.All.Hello() 去调用所有连接上的客户端中hello()方法,即Hello() 是客户端中的方法 public void Hello() { Clients.All.hello(); } public void Send(string msg) { string name="NiHao"; Clients.All.SendMessage(name,msg); } //客户端连接上时,会进入到此方法中 public override Task OnConnected() { Trace.WriteLine("客户端连接成功"); return base.OnConnected(); } public override Task OnReconnected() { Trace.WriteLine("客户端重连中"); return base.OnReconnected(); } public override Task OnDisconnected(bool stopCalled) { return base.OnDisconnected(stopCalled); }}
4、我们需要在Startup.cs中搞点事儿
public void Configuration(IAppBuilder app){ app.UseCors(CorsOption.AllowAll); app.MapSignalR();}
这样我们服务器就搭建成功了!!
注:我们服务在IISExpress中的端口号是系统自动分配的,我们如何设置固定的端口号呢?
打开项目文件夹中.vs文件中的applicationhost.config,
<site name="项目名" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="文件路径" /> </application> <bindings> <binding protocol="http" bindingInformation="*:2141:localhost" /> <binding protocol="http" bindingInformation="*:2141:192.168.2.113" /> </bindings> </site>
添加固定IP地址和端口号如上。
当你的SignalR客户端在手机端的话,是接连不上IISExpress服务器的。
方法:需要以管理员身份运行cmd,输入以下命令开启incoming connect
–netsh http add urlacl url=http://192.168.1.42:58938/ user=everyone
–netsh advfirewall firewall add rule name=”IISExpressWeb” dir=in protocol=tcp localport=58938 profile=private remoteip=localsubnet action=allow
客户端搭建
客户端可以在console控制台和winform运行,这边放上console控制台的代码,winform中的代码其实跟控制台是一样的。
1、创建控制台项目
2、添加引用(NuGet中下载Microsoft.AspNet.SignalR.Client)
3、代码如下
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Microsoft.AspNet.SignalR.Client;namespace ClientsConsole{ class Program { static void Main(string[] args) { string url = "http://127.0.0.1:2141"; HubConnection _conn = new HubConnection(url,true); IHubProxy _proxy = _conn.CreateHubProxy("MyHub"); _conn.Start(); //定义客户端的方法sendMessage()(有两个string类型的参数,当服务端调用sendMessage,需要传入2个string类型参数),以这种格式定义方法服务端才能去调用 _proxy.On<string, string>("sendMessage", (n, s) => { }); _conn.StateChanged += new Action<StateChange>(tgt => { if (((StateChange)tgt).NewState == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) { t1 = Environment.TickCount; //客户端调用服务端的 Send() 方法,传入参数"Hello" _proxy.Invoke("send", "Hello"); } }); Console.ReadLine(); } }}
总结:第一次写博客,有些可能考虑的不周到,有什么问题随时可以问我,后面会写上SignlaR的SelfHost服务和如何在Linux中负载Nginx服务。
- 如何搭建SignalR服务器和客户端(c#)
- SignalR如何搭建SelfHost服务端(C#)
- 如何在本机搭建SVN服务器和客户端
- 搭建CVS服务器和客户端
- python搭建服务器和客户端
- 搭建SVN服务器和客户端
- 搭建SVN服务器和客户端
- svn服务器和客户端搭建
- SignalR如何搭建在Linux中以Nginx负载的服务端(C#)
- SVN服务器和客户端下载与搭建(一)
- 搭建Git服务器(Ubuntu虚拟机)和windows客户端
- SignalR实现服务器与客户端的实时通信
- 服务器推送消息到客户端 SignalR 弹出消息
- SignalR实现服务器与客户端的实时通信
- SignalR 实现 Web 客户端与服务器实时通信
- SignalR实现服务器与客户端的实时通信
- 搭建CVS服务器和CVS客户端
- 搭建CVS服务器和CVS客户端
- PS
- Linux系统find命令用法总结
- 八.解决依赖冲突
- C语言链表的来源分析
- 懂点网站交互(3):广告牌设计101法则
- 如何搭建SignalR服务器和客户端(c#)
- BZOJ 1010: [HNOI2008]玩具装箱toy【斜率优化】
- 005_字面量和变量
- POJ 3414 Pots 我没有用广搜做
- 二十三种设计模式之迭代器模式
- C语言数据结构之栈篇
- 几种基本的排序方法
- 去除ArrayList集合中的重复自定义对象元素
- L2-004. 这是二叉搜索树吗?