tunafish24
tunafish24

Reputation: 2469

How to create a SuperSocket WebSocket server in code

I'm trying to create a Websocket server using SuperSocket library but documentation is limited and I can't find any info on how to setup & configure a websocket server.

My key requirements are:

  1. Create the Server in code.
  2. Setup multiple listeners
  3. Provide custom setting for number of worker/pool threads.

        server = new WebSocketServer();
        var serverConfig = new SuperSocket.SocketBase.Config.ServerConfig();
        serverConfig.MaxConnectionNumber = 100000;
        //serverConfig.Port = 222;
        //serverConfig.ListenBacklog = 5000;
    
        var list = new List<SuperSocket.SocketBase.Config.ListenerConfig>(20);
        int port = 223;
        for (int i = 0; i < 1;i++)
        {
            var listener = new SuperSocket.SocketBase.Config.ListenerConfig();
            listener.Port = port;
            listener.Backlog = 1000;
            listener.Ip = "Any";
            listener.Security = "None";
            port++;
    
            list.Add(listener);
        }
    
        serverConfig.Listeners = list;
        server.Setup(serverConfig);
    
        server.NewSessionConnected += server_NewSessionConnected;
        server.SessionClosed += server_SessionClosed;
        server.NewMessageReceived += server_NewMessageReceived;
        server.Start();
    

I tried following code but it result in following error "You cannot start a server instance which has not been setup yet". However, if I comment out the for loop and uncomment the two lines above it then it works, although it only listens on one port.

Upvotes: 3

Views: 4596

Answers (1)

KevYou
KevYou

Reputation: 41

Just for the sake of others coming to this unanswered question. The OP does have the method nearly correct, maybe capacity declaration is interfering, not sure, didn't play with it, but with a slight change to the listener creation, it works.

var list = new List<SuperSocket.SocketBase.Config.ListenerConfig>();
int port = 223;
for (int i = 0; i < 21;i++)
{
   var listener = new SuperSocket.SocketBase.Config.ListenerConfig();
   listener.Port = port;
   port++;
   list.Add(listener);
}

Upvotes: 2

Related Questions