Mono 上的 SignalR 和 Websockets

SignalR and Websockets on Mono

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

我项目中的引用:

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

有人可以为我指明正确的方向以解决当前正在开发的未解决问题或错误跟踪器吗?据我所知,this answer 中的 http.sys 中有一些核心功能是必需的,并且存在于 Windows 中 8. 是否有计划在单声道中实现它?我不想获得一些第三方库,并希望它在 SignalR.

中运行

大约 3 个月前,我对 Angular 2 和 Singnalr 的项目进行了类似的调查。我希望,web 套接字的使用对您的项目来说不是必需的。

如您所见here one of the Xamarin developers stated, it is not working as System.Web.WebSocket is not implemented in the Mono,他们目前不打算实施。

I believe there's a lot of work going on with mono's http stack right now and that probably needs to stabilize before we see this particular issue resolved.

我建议您继续使用当前的单声道,因为 signalr 可以回退到 websockets,这不会是一个大问题,当它实现为单声道时,您可以简单地更新您的项目。以目前微软的开源政策,我相信它会比预期的更快。

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

I'd encourage anyone interested to fork SignalR and see if they can use one of these xplat websockets implementations to get it working in their own fork.

更新:

不幸的是,我找不到带有 WebSocketListener 的 SignalR 的任何分支,但由于它有很多分支,所以很难找到。

据我所知,Mono 团队几乎停止了所有实施并专注于 ASP.Net vNext 实施到 Mono as it is open source