Mono上的SignalR和Websockets

时间:2015-05-26 08:05:19

标签: c# .net mono .net-4.5 owin

我已经完成了几个小时的搜索工作,试图找出为什么websockets传输无法通过mono 4.0上运行在linux上运行的c#4.5应用程序中的信号器工作。

我的项目中的参考资料:

  • Microsoft.Owin.Host.HttpListener
  • Microsoft.Owin.Host.SystemWeb

现在,我正在试图找出阻碍网页框工作的瓶颈所在。我理解它的方式是SystemWeb基本上是一个自运行服务器,利用Httplistener监听端口上的HTTP连接,然后将它们处理到SystemWeb。我的这部分是否正确?

有人能指出我正确的方向开放问题,或者目前正在开发的错误跟踪器吗?据我所知,http.sys中有一些核心功能来自this answer,这些功能在Windows 8中是必需的。是否有计划在单声道中实现这一功能?我不想获得一些第三方库,并且在SignalR中使用它。

1 个答案:

答案 0 :(得分:13)

我在3个月前与Angular 2和Singnalr进行了类似的调查。我希望,Web套接字的使用对您的项目来说并不重要。

正如您所看到的here其中一位Xamarin开发人员所说,由于System.Web.WebSocket未在Mono中实施,因此无法正常工作,并且他们目前并未计划实施它。

  

我相信单声道的http堆栈还有很多工作要做   现在,在我们看到这一点之前,可能需要稳定下来   问题解决了。

我建议继续使用当前的单声道工作,因为信号器具有回退的websockets它不会是一个大问题,当它实现为单声道时,你可以简单地更新你的项目。根据目前MS的开源政策,我相信它会比预期更快。

如果您需要项目的websocket功能,那么您应该分叉SignalR或找到现在使用第三方解决方案的分叉版本WebSocketListener非常受欢迎并且具有更多功能。

  

我鼓励任何有兴趣分叉SignalR的人,看看他们是否可以   使用其中一个xplat websockets实现来使其工作   他们自己的叉子。

更新

不幸的是,我找不到任何带有WebSocketListener的SignalR的分叉,但因为它有很多分叉很难找到。

据我所知,Mono团队几乎停止了所有实施,并将注意力集中在Monoopen source ASP.Net vNext上,因为它是{{3}}。