C# 仅带WebSocket或轮询的信号器,以防止连接限制

C# 仅带WebSocket或轮询的信号器,以防止连接限制,c#,signalr,owin,polling,C#,Signalr,Owin,Polling,我有一个客户端应用程序,它在本地主机上公开http端点。这样,应用程序本身的窗口以及使用嵌入式浏览器的外部应用程序都可以显示应用程序的数据。应用程序需要将数据推送到浏览器会话 在以前版本的应用程序中,我使用了一种自制的轮询机制(不是长轮询)来防止嵌入式浏览器的连接限制 现在整个应用程序都被重写了,整个设计也因此而改变,但也包括从自制轮询切换到信号器。它与WebSocket配合使用效果很好-我测试了它,效果很好!所以我认为我已经完成了…直到我在一个有Windows7客户端操作系统的客户那里安装了它

我有一个客户端应用程序,它在本地主机上公开http端点。这样,应用程序本身的窗口以及使用嵌入式浏览器的外部应用程序都可以显示应用程序的数据。应用程序需要将数据推送到浏览器会话

在以前版本的应用程序中,我使用了一种自制的轮询机制(不是长轮询)来防止嵌入式浏览器的连接限制

现在整个应用程序都被重写了,整个设计也因此而改变,但也包括从自制轮询切换到信号器。它与WebSocket配合使用效果很好-我测试了它,效果很好!所以我认为我已经完成了…直到我在一个有Windows7客户端操作系统的客户那里安装了它。然后,WebSocket不受支持,传输返回到长轮询,从而快速达到连接限制。特别是对于嵌入式浏览器,您不知道已经发生了什么

最简单的方法是让signalR使用WebSocket或轮询,而不使用其他传输方法,但据我所知,signalR不支持轮询。(只需SSE、foreverframe和长轮询即可解决上述问题)。事实上,轮询的性能并没有那么好,这并不困扰我,因为它只在本地主机上运行

有没有一种简单的方法返回到轮询,尽可能多地使用现有代码?我的意思是,一切都已经存在了,如果信号员只支持轮询,就不会有问题了

感觉上我忽略了一些东西,这些东西将花费我大量的额外时间,并与现有代码挂钩


该应用程序正在使用自托管的持久连接。

我从未见过一次有多个长轮询同时连接到服务器。@fredrik,虽然还有其他情况,但对我来说最重要的是,连接限制似乎在同一应用程序的窗口之间共享。我知道Skype for Business中的extensionwindow与此共享一个事实。因此,会话1和会话2可以工作,但是会话3生成了一个带有嵌入式浏览器的新窗口,并达到了2个活动连接限制。如果这是您达到的限制,那么即使WebSocket也没有帮助。他们也会在第三个窗口上达到极限…@fredrik,你不会用websockets击中瓶盖-因为websockets不计入那些打开的连接。用6个以上的windows进行了测试。我建议只购买windows Server。。。