WebSocketsSharp自定义事件反序列化

时间:2017-12-06 12:45:39

标签: c# json websocket datamodel websocket-sharp

我必须构建一个功能,我可以使用websockets-sharp发送自定义事件。

我创建了一个函数MakePacket,它创建了一个我可以发送的字符串["draw:drawer:accept","{\"imei\":\"123\"}"]

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

所以我想在另一个方向做同样的事情。如果发生阻止事件,我想将其转换回eventNamePayLoad

所以我创建了一个数据模型:

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 个答案:

答案 0 :(得分:2)

你可以这样做:

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;
    }
}

答案 1 :(得分:0)

我创建了一个示例,如何使用WebSocket-Sharp和自定义事件,例如socket.io

我在我的git存储库中发布了这个例子:

Websocket-Sharp Custom Events

感谢@Evk的帮助