Code Quality Rank: L3
Programming language: C#
License: MIT License
Tags: Server     Socket     WebSocket     WebSockets    

NetGain alternatives and similar packages

Based on the "WebSocket" category.
Alternatively, view NetGain alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of NetGain or a related project?

Add another 'WebSocket' Package


Welcome to StackExchange.NetGain!

Warning: reduced maintenance

A few things have changed since this library was written:

  • "pipelines" have become the new hotness for high performance low overhead IO code - see my 3-and-a-bit-part series here
  • "Kestrel", combined with pipelines, now provides a great hosting experience for high volume servers
  • HTTP/2 (and above) have reduced the usefulness of web-sockets (one of the main drivers for me and NetGain), since the web-sockets drafts for HTTP/2 never really "took"

As of late 2018, Stack Overflow (Stack Exchange) have migrated away from NetGain, instead using Kestrel's inbuilt web-socket support over HTTP/1.*; it is entirely possible that as we delve more into HTTP/2, we look more in the direction of SSE (EventSource).

So: we're not actively working with, or working on, this library. If you have a burning desire to take it further as an official maintainer (perhaps with some tweaks to naming, obviously) - let me know!

NetGain supports:

  • RFC 6455
  • all draft versions of the RFC (between hixie-76 and v13, aka RFC 6455)
  • hixie-76/hybi-00
  • fixes for various browsers with slightly broken implementations


StackExchange.NetGain is built as a single assembly, StackExchange.NetGain.dll.

NuGet Gallery

StackExchange.NetGain is available on the [NuGet Gallery]

  • [NuGet Gallery: stackexchange.netgain]

You can add StackExchange.NetGain to your project with the NuGet Package Manager, by using the following command in the Package Manager Console.

PM> Install-Package StackExchange.NetGain

WebSocket Server Example

using System;
using System.Net;
using StackExchange.NetGain;
using StackExchange.NetGain.WebSockets;

namespace Example
  public class Program
    public static void Main (string[] args)
        IPEndPoint endpoint = new IPEndPoint(IPAddress.Loopback, 6002);
        using(var server = new TcpServer())
            server.ProtocolFactory = WebSocketsSelectorProcessor.Default;
            server.ConnectionTimeoutSeconds = 60;
            server.Received += msg =>
                var conn = (WebSocketConnection)msg.Connection;
                string reply = (string)msg.Value + " / " + conn.Host;
                Console.WriteLine("[server] {0}", msg.Value);
                msg.Connection.Send(msg.Context, reply);
            server.Start("abc", endpoint);
            Console.WriteLine("Server running");

        Console.WriteLine("Server dead; press any key");