Пользовательские события 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;
}
}