繁体   English   中英

将CefSharp的ResourceHandlerFactory与SignalR / WebSockets一起使用

[英]Using CefSharp's ResourceHandlerFactory with SignalR/WebSockets

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

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

这对于静态文件效果很好,但是我无法处理SignalR的WebSocket请求。 客户端发送这些请求,但它们从未出现在我的IResourceHandlerFactoryGetResourceHandler方法中,该方法接受所有其他请求。

我该如何处理来自CefSharp的WebSocket请求?

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

var settings = new CefSettings();
settings.RegisterScheme(new CefCustomScheme { SchemeName = "ws", SchemeHandlerFactory = new OwinSchemeHandlerFactory() });
Cef.Initialize(settings);

...而我的OwinSchemeHandlerFactory只是实现了创建方法,该方法返回一个IResourceHandler

public IResourceHandler Create(IBrowser browser, IFrame frame, string schemeName, IRequest request)
{
    // return myResourceHandlerFactory.GetResourceHandler();
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM