我按照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
答案 0 :(得分:1)
如果您使用ISchemeHandlerFactory
,则可以注册一个方案来拦截ws
和/或wss
方案。