我已经完成了几个小时的搜索工作,试图找出为什么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
中使用它。
答案 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团队几乎停止了所有实施,并将注意力集中在Mono的open source ASP.Net vNext上,因为它是{{3}}。