# GrapeCity.Documents.Html.LaunchOptions.WebSocketFactory

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="GrapeCity_Documents_Html_LaunchOptions_WebSocketFactory_" data-uid="GrapeCity.Documents.Html.LaunchOptions.WebSocketFactory*">WebSocketFactory Property
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="GrapeCity_Documents_Html_LaunchOptions_WebSocketFactory_" data-uid="GrapeCity.Documents.Html.LaunchOptions.WebSocketFactory*"></a>
<h4 id="GrapeCity_Documents_Html_LaunchOptions_WebSocketFactory" data-uid="GrapeCity.Documents.Html.LaunchOptions.WebSocketFactory">WebSocketFactory</h4>
<div class="markdown level1 summary"><p>Gets or sets the optional factory for <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.net.websockets.websocket">WebSocket</a> implementations.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public WebSocketFactory WebSocketFactory { get; set; }</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Property WebSocketFactory As WebSocketFactory</code></pre>
</div>
<h5 id="GrapeCity_Documents_Html_LaunchOptions_WebSocketFactory_remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>If you need to run <a class="xref" href="GrapeCity.Documents.Html.GcHtmlBrowser.html">GcHtmlBrowser</a> on Windows 7, you can use <a class="xref" href="GrapeCity.Documents.Html.LaunchOptions.WebSocketFactory.html#GrapeCity_Documents_Html_LaunchOptions_WebSocketFactory">WebSocketFactory</a>
to inject <a href="https://www.nuget.org/packages/System.Net.WebSockets.Client.Managed/">System.Net.WebSockets.Client.Managed</a>.</p>
<pre><code class="lang-csharp">WebSocketFactory = async (uri) =&gt;
{
    var client = SystemClientWebSocket.CreateClientWebSocket();
    if (client is System.Net.WebSockets.Managed.ClientWebSocket managed)
    {
        managed.Options.KeepAliveInterval = TimeSpan.FromSeconds(0);
        await managed.ConnectAsync(uri, default);
    }
    else
    {
        var coreSocket = client as ClientWebSocket;
        coreSocket.Options.KeepAliveInterval = TimeSpan.FromSeconds(0);
        await coreSocket.ConnectAsync(uri, default);
    }
    return client;
}</code></pre>
</div>
</div>
