使用CefSharp的ResourceHandlerFactory和SignalR / WebSockets

时间:2016-02-19 19:04:03

标签: c# owin chromium-embedded katana cefsharp

我按照this question的答案中的说明进行操作,其中显示了如何使用ResourceHandlerFactory配置CefSharp以避免使用标准OS网络堆栈:

var browser = new ChromiumWebBrowser("<html file here>")
{
     ResourceHandlerFactory = myResourceHandlerFactory, //implements IResourceHandlerFactory                
};

这适用于静态文件,但我无法处理来自SignalR的WebSocket请求。客户端发送这些请求,但它们从未出现在我GetResourceHandler的{​​{1}}方法中,该方法接受所有其他请求。

如何在内存中处理来自CefSharp的WebSocket请求?

使用解决方案进行编辑:使用amaitland的建议,我能够实现IResourceHandlerFactory来拦截WebSocket请求。我的Cef初始化现在看起来像这样:

ISchemeHandlerFactory

...我的OwinSchemeHandlerFactory只实现了返回var settings = new CefSettings(); settings.RegisterScheme(new CefCustomScheme { SchemeName = "ws", SchemeHandlerFactory = new OwinSchemeHandlerFactory() }); Cef.Initialize(settings); 的Create方法:

IResourceHandler

1 个答案:

答案 0 :(得分:1)

如果您使用ISchemeHandlerFactory,则可以注册一个方案来拦截ws和/或wss方案。