SignalR.Net客户端连接限制
本文关键字:连接 客户端 Net SignalR | 更新日期: 2023-09-27 18:01:11
我在Windows通用应用程序上有.net客户端,在localhost web api、IIS Windows 10、上有SignalR服务器
安装在windows 10上的客户端应用程序,当一个客户端连接启动时,秒客户端连接启动方法挂起,如果我断开了一个客户端的连接,秒客户端能够连接,SignalR服务器具有IIS Windows 10表、Atom处理器。
因此,对于这个和/或配置相关的问题,是否存在任何连接限制。
步骤1:创建自托管SignalR服务器控制台应用程序
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using Microsoft.Owin.Cors;
using Microsoft.Owin.Hosting;
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace Join8POS.SignalRServer
{
class Program
{
static void Main(string[] args)
{
// This will *ONLY* bind to localhost, if you want to bind to all addresses
// use http://*:8080 to bind to all addresses.
// See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx
// for more information.
string localComputerName = Dns.GetHostName();
Console.WriteLine("Enter SignalR Server Host IP Address: ");
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress hostIP in localIPs)
{
// is localhost
if (IPAddress.IsLoopback(hostIP))
{
}
if (hostIP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
}
var ipp= hostIP.MapToIPv4();
}
var inp= Console.ReadLine();
string url = "http://"+inp+":8080";
using (WebApp.Start(url))
{
Console.WriteLine("Server running on {0}", url);
outer:
Console.WriteLine("'nPress 'C' to close SignalR server.");
var ky= Console.ReadKey();
if (ky.KeyChar != 'C')
{
goto outer;
}
}
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
// UnityConfig.RegisterComponents(config);
//WebApiConfig.Register(config);
var hubConfiguration = new HubConfiguration
{
// You can enable JSONP by uncommenting line below.
// JSONP requests are insecure but some older browsers (and some
// versions of IE) require JSONP to work cross domain
EnableJSONP = true,
EnableJavaScriptProxies = true,
EnableDetailedErrors = true
};
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
app.Map("/signalr", map =>
{
// Setup the cors middleware to run before SignalR.
// By default this will allow all origins. You can
// configure the set of origins and/or http verbs by
// providing a cors options with a different policy.
map.UseCors(CorsOptions.AllowAll);
hubConfiguration.EnableDetailedErrors = true;
// Run the SignalR pipeline. We're not using MapSignalR
// since this branch is already runs under the "/signalr"
// path.
map.RunSignalR(hubConfiguration);
});
}
}
[HubName("shopApiHub")]
public class ShopApiHub : Hub
{
/// <summary>
/// ShopApiHub OnConnected
/// </summary>
/// <returns></returns>
public override Task OnConnected()
{
//CustomLogging.Log("OnConnected "+ Context.ConnectionId, LoggingType.SignalRShopHub);
return base.OnConnected();
}
/// <summary>
/// Invoked on Take Out order generated.
/// </summary>
public void TakeOutOrderRaise()
{
Clients.All.takeOutOrderRaise();
//CustomLogging.Log("TakeOutOrderRaise ", LoggingType.SignalRShopHub);
}
/// <summary>
/// invoked when got any update in runningtable.xml
/// </summary>
public void refreshFloorPlan()
{
Clients.All.refreshFloorPlan();
}
/// <summary>
/// OnDisconnected
/// </summary>
/// <param name="bl"></param>
/// <returns></returns>
public override Task OnDisconnected(bool bl)
{
return base.OnDisconnected(bl);
}
}
}
步骤2:windows防火墙中允许的入站端口8080。以及能够使用IPv4地址在本地网络中连接的signaler.net客户端。类似(10.10.10.35(
SignalR服务器在10.10.10.35:8080 上运行的自托管应用程序