Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SignalR and Websockets on Mono

I've done hours of scouring, trying to figure out why the websockets transport doesn't work through signalr on my c# 4.5 application running on linux via mono 4.0.1.

References in my project:

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

Right now, I'm trying to figure out where the bottleneck is that is preventing websockets from working. The way I understand it, is SystemWeb is basically a self running server that utilizes the Httplistener to listen on a port for an HTTP connection which then processes them up to SystemWeb. Am I getting this part correct?

Can someone point me in the right direction to an open issue, or a bug tracker where this is currently in development? From what I can tell, there are some core functions in http.sys from this answer which are required and present in Windows 8. Are there plans on implementing this in mono? I'd prefer not to get some third party library, and to get this working in SignalR.

like image 858
ugh StackExchange Avatar asked May 26 '15 08:05

ugh StackExchange


1 Answers

I have made similar investigation about 3 months ago a project with Angular 2 and and Singnalr. I hope, the web socket usage is not essential for your project.

As you can see here one of the Xamarin developers stated, it is not working as System.Web.WebSocket is not implemented in the Mono and they are not planing to implement it this days.

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.

I suggest that continue your work with current mono as signalr has fallback for websockets it is not going to be a huge problem and when it is implemented to mono you can simple just update your project. With the current MS's open source policy I believe it is going to be sooner than it supposed to be.

If you need the websocket feature for your project then you should fork the SignalR or find a forked version that uses a 3rd party solution right now WebSocketListener is really popular and has more features.

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.

Update:

Unfortunately, I could not find any fork of SignalR with WebSocketListener but as it has lots of forks it is hard to find.

As far as I know Mono team stop pretty much all implementation and focused on ASP.Net vNext implementation to Mono as it is open source.

like image 198
Onur Topal Avatar answered Sep 25 '22 04:09

Onur Topal