'Websocket not working in CEFSharp project

I have a pretty basic cefsharp project that open a website just like a browser.

My website have some secure websocket connections those work perfectly in normal browser, but when I try to run the same website in cefsharp, it never connects to socket server.

After few seconds of Connecting it Disconnect...

I was trying to use this way Using CefSharp's ResourceHandlerFactory with SignalR/WebSockets

But the problem is, I don't want to intercept websocket request. I just want them to be able to run on the website.

Xaml Code::

<wpf:ChromiumWebBrowser x:Name="Browser" >
                <behaviors:Interaction.Behaviors>
                    <behaviours:HoverLinkBehaviour x:Name="HoverLinkBehaviour"/>
                </behaviors:Interaction.Behaviors>
            </wpf:ChromiumWebBrowser>

C# Code::

 // Request Handler (add cloudflare service auth token in header)
 Browser.RequestHandler = new CloudflareServiceToken(
                                                    "Public Token",
                                                    "Secret Key"
                                                    );


            Browser.Address = Config.HOME_URL;

My Request Handler

class CloudflareServiceTokenHandler : ResourceRequestHandler
    {
        public CloudflareServiceTokenHandler(string key, string secret)
        {
            _key = key;
            _secret = secret;
        }

        private string _key, _secret;

        protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
        {
            if (!string.IsNullOrEmpty(_key) && !string.IsNullOrEmpty(_secret))
            {
                var headers = request.Headers;
                headers["CF-Access-Client-Id"] = $"{_key}";
                headers["CF-Access-Client-Secret"] = $"{_secret}";
                request.Headers = headers;
                return CefReturnValue.Continue;
            }
            else return base.OnBeforeResourceLoad(chromiumWebBrowser, browser, frame, request, callback);
        }

    }
    class CloudflareServiceToken : RequestHandler
    {
        public CloudflareServiceToken(string CF_KEY, string CF_SECRET)
        {
            _key = CF_KEY;
            _secret = CF_SECRET;
        }

        private string _key, _secret;

        protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
            if (!string.IsNullOrEmpty(_key) && !string.IsNullOrEmpty(_secret)) return new CloudflareServiceTokenHandler(_key, _secret);
            else return base.GetResourceRequestHandler(chromiumWebBrowser, browser, frame, request, isNavigation, isDownload, requestInitiator, ref disableDefaultHandling);
        }
    }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source