我正在比较WebSocket服务器
- xsockets.net
- SuperWebSocket
- Fleck
- SignalR
SignalR仅在Server 2012上可用,但我的服务器运行的是Windows 2008。
超级WebSocket&Fleck,它们只支持flash代理回退。
xsockets.net,这个在旧版web浏览器中支持长池回退。但该公司表示,该后备方案仅适用于MVC3/4项目。它能在MVC3/4应用程序中打开一个端口来接受支持websocket的客户端的连接吗?在Windows 2008上,这对我来说似乎是不可能的。
我有一个问题,那就是:XSockets.NET是如何在Windows2008中运行的?
正如您所知,WebSocket功能直到IIS8.0才添加到http.sys中。在IIS7.5中,SignalR始终在所有客户端的长池模式下运行。
XSockets.NET也一样吗?因为据说只有在MVC3/4项目中才支持长池回退。如果我想利用回退支持的优势,我必须在最终由IIS托管的MVC3/4中使用XSockets.NET。IIS7.5没有websocket的功能,这就是我害怕的原因
有人知道它在承载MVC应用程序的IIS7.5中是如何工作的吗?通过长池处理所有客户端?
编辑:
兼容性
XSockets将在任何运行.NET 4,0(或更高版本)或Mono的计算机上与websocket兼容。这与操作系统无关。。。如果你愿意,你甚至可以在Raspberry PI上运行完整的XSockets。XSockets将使用回退的唯一时间是如果客户端连接不支持websockets(IE9、IE8等)。
SignalR在.NET 4.5和内置的WebSocket命名空间(在4.5中)上构建了对WebSocket的支持,而XSockets在.NET 4.0中实现了WebSocket协议(等等)。SignalR和XSockets实际上没有任何评论,除了它们都是在.NET框架上构建的,之后看起来非常不同。。。但这超出了范围。
环境
由于XSockets已经自行实现了WebSocket协议,这意味着XSockets不依赖于任何Web服务器、IIS、Apache等。如果您愿意,它可以作为独立的windows服务或在Azure上运行。然而,你也可以在你的网络中启动XSockets,当你安装我们的nuget包时,这就是它的实际设置方式。
回退
当您将XSockets安装到MVC3/MVC4解决方案中时,安装将自动注册一个额外的控制器。此控制器将使用我们的外部API(套接字)与XSockets通信,如果客户端不支持websockets,则JavaScript API将对此控制器执行AJAX(长轮询)。作为一名开发人员,如果您想使用回退,除了添加一个额外的JavaScript文件之外,您不需要做任何不同的事情。
现在,您也可以使WebForms(和Azure)的回退工作,但由于这超出了范围,如果您对此有疑问,我们将留待以后处理。
底线结束
- 不要担心XSockets需要一个特殊的操作系统来运行,我们运行在任何Windows/Unix/Linux环境中,只要.NET 4.0或Mono已安装
- XSockets在IIS、Azure中作为Windows服务或控制台应用程序运行。。。您甚至可以在Raspberry PI或只要.NET/Mono的需求已满
- XSockets既可以在.NET/Mono环境中开发,因此您实际上可以使用Xamarin从MAC和使用Visual Studio从Windows开发插件
- 当您在MVC3/MVC4中安装用于开发时,会自动设置回退,但您也可以在Azure和WebForms
- SignalR让服务器环境决定客户端是否可以使用websocket,XSockets总是有websocket和仅当客户端不支持时才回退到长轮询websockets