Пользовательские события WebSocketsSharp десериализуются

Я должен создать функциональность, где я могу отправить пользовательское событие с websockets-sharp,

Я сделал функцию MakePacket это создает мне строку, как это ["draw:drawer:accept","{\"imei\":\"123\"}"] что я могу отправить.

    public string MakePacket(string eventName, string data)
    {
        return JsonConvert.SerializeObject(new[] { eventName, data });
    }

Поэтому я хочу сделать то же самое в другом направлении. Когда есть входящее событие, я хочу преобразовать это обратно в eventName а также PayLoad,

Итак, я создаю модель данных:

public class PacketModel
{
    public string EventName { get; set; }

    public string PayLoad { get; set; }
}

И я попытался преобразовать это с помощью этой функции:

    public PacketModel OpenPacket(string data)
    {
        PacketModel packet = JsonConvert.DeserializeObject<PacketModel>(data);

        return packet;
    }

Но это не работает...

У кого-то есть идея, как я могу это сделать?

Спасибо

2 ответа

Решение

Я создаю пример, как работать с WebSocket-Sharp и пользовательские события, такие как socket.io,

Я публикую пример в моем репозитории git:

Пользовательские события Websocket-Sharp

Спасибо @Evk за помощь

Вы можете сделать что-то вроде этого:

      public static class sConnection
{
    public static WebSocket socket;
    public static bool connected = false;
    public static bool result = false;

    public static void Main()
    {
        socket = Connect();
        socket.Connect();


        while (!result) { }
    }

    public static WebSocket Connect()
    {
        var socket = new WebSocket(url: ""); //Your websoket enpoint

        socket.OnOpen += (sender, e) =>
        {
            isConnected = true;
        };

        socket.OnClose += (sender, e) =>
        {
            isConnected = false;
        };

        socket.OnMessage += (sender, e) =>
        {
            //Converting the event back to 'eventName' and 'Json'
            PacketHandler packetHandler = new PacketHandler();
            PacketModel packet = packetHandler.OpenPacket(e.Data);

            //Do something with the message

            result = true;
        };

        return socket;
    }
}
Другие вопросы по тегам