1
我已經.NET客戶端在Windows上通用的應用程序和服務器SignalR託管在本地主機的網絡API,IIS安裝在Windows 10,當一個客戶端連接,然後開始秒客戶端窗口10,SignalR .NET客戶端連接限制
客戶端應用程序連接啓動方法掛起,如果我斷開一個客戶端,然後秒連接, SignalR服務器有IIS Windows 10表,Atom處理器。
因此,是否有任何連接限制這個和/或配置相關的問題。
我已經.NET客戶端在Windows上通用的應用程序和服務器SignalR託管在本地主機的網絡API,IIS安裝在Windows 10,當一個客戶端連接,然後開始秒客戶端窗口10,SignalR .NET客戶端連接限制
客戶端應用程序連接啓動方法掛起,如果我斷開一個客戶端,然後秒連接, 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。 和signalr .net客戶端能夠使用IPv4地址在本地網絡中進行連接。 like(10.10.10.35)
SignalR Server Self hosted application running on 10.10.10.35:8080