websocket-sharp icon indicating copy to clipboard operation
websocket-sharp copied to clipboard

How do WebSocketBehaviors work with a WebSocketServer?

Open jheliker opened this issue 2 years ago • 2 comments

Hello @sta -

Thanks for the great library! I'm having trouble understanding how WebSocketBehaviors work for a WebSocketServer.

Is there a new instance of the WebSocketBehavior instantiated for every new connection made to the server?

I'm trying to use a WebSocketBehavior to manage all connected clients and I'm getting duplicated messaging.

jheliker avatar Dec 19 '23 17:12 jheliker

`protected override void OnStart(string[] args) { try { server = new WebSocketServer("IPPort");

    server.AddWebSocketService<Web>("/Web");
    //server.AddWebSocketService<Phone>("/Phone");
    //server.AddWebSocketService<Tablet>("/Tablet");
    //server.AddWebSocketService<Desktop>("/Desktop");

    server.Start();
    Logs.toFile("OnStartLog.txt", "Success");
}
catch (Exception error)
{
    Logs.toFile("OnStartLog.txt", " Exception: " + error.Message);
}

}`

GholibjonMadiyarov avatar Dec 23 '23 07:12 GholibjonMadiyarov

`class Web : WebSocketBehavior { public Web() {

}

protected override void OnOpen()
{
    Logs.toFile("ClientOpenLog.txt", "Id: " + ID);
}

protected override void OnMessage(MessageEventArgs e)
{
    try
    {
        JObject data = JObject.Parse(e.Data);
        switch (data["query"].ToString())
        {
            case "query1":
                //
                break;

            case "query2":
                //
                break;

            default:
                Logs.toFile("OnMessageLog.txt", " Undifined Query:" + data["query"]);
                break;
        }
    }
    catch (Exception exception)
    {
        Logs.toFile("MessageRecievedLog.txt", "Exception:" + exception.Message);
    }
}

protected override void OnError(ErrorEventArgs e)
{
    Logs.toFile("SocketExceptionsLog.txt", "SocketException:" + e.Message);
}

protected override void OnClose(CloseEventArgs e)
{
    Logs.toFile("ClientCloseLog.txt", "Id: " + ID + ", Code: " + e.Code + ", Reason:" + e.Reason + ", WasClean:" + e.WasClean);
}

}`

GholibjonMadiyarov avatar Dec 23 '23 07:12 GholibjonMadiyarov