本文介绍了自托管SignalR是否需要Windows Server 2012才能使用WebSocket?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
自托管应用程序似乎不是在IIS上运行,因此它是否需要特定的操作系统才能在服务器端启用Web套接字?
推荐答案
浏览器将支持它,因为它们已经在内部实现了该协议,大多数浏览器不会使用操作系统传输库,因此即使操作系统不直接支持WebSocket,它们也能够使用它。
Windows 8/2012has no built in support for WebSockets之前的HTTP.SYS,因此尽管.NET 4.5包含WebSocket类,但除非您在Windows 8/2012上运行.NET 4.5+,否则这些类将无法工作,这将影响在Windows 8/lt;8中运行的自托管解决方案。
实现驻留在.NET和IIS8刚刚利用的操作系统代码中。.NET类只是将调用包装到HTTP.SYS,因此它将在没有基础支持的操作系统上引发异常。
自托管时,您可以使用您自己的内部Web套接字服务器(如Fleck),并告诉SignalR您实际上支持Web套接字,而不考虑您的操作系统。
在自托管应用程序中启动Fleck服务器(their site上的示例),作为示例,您可以对PersistentConnection自托管执行此操作:
public override Task ProcessRequest(HostContext context)
{
// Override what SignalR will be telling you internally and point to your own Web Socket Server.
context.Items[HostConstants.SupportsWebSockets] = true;
context.Items[HostConstants.WebSocketServerUrl] = "ws://localhost:3000";
return base.ProcessRequest(context);
}
免责声明:这是一个未记录在案的功能,SignalR的开发人员告诉我,在该库的未来版本中可能无法实现这一点。请记住,您还需要满足保持活动和将数据序列化到JSON的需要,这样才能很好地与SignalR客户端配合使用。它在版本1.1.3中仍然有效。 这篇关于自托管SignalR是否需要Windows Server 2012才能使用WebSocket?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!