【问题标题】:WebSocketsSharp custom events deserializeWebSocketsSharp 自定义事件反序列化
【发布时间】:2023-03-17 17:35:01
【问题描述】:

我必须构建一个可以使用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;
    }

但这不起作用...

有人知道我该怎么做吗?

谢谢

【问题讨论】:

  • 而不是序列化 new[] {eventName, data} 的数组 - 创建 PacketModel 并序列化它
  • 哦不,我怎么能忘记这样的事情……大错特错。谢谢你的提示

标签: c# json websocket datamodel websocket-sharp


【解决方案1】:

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

我将示例发布在我的 git 存储库中:

Websocket-Sharp Custom Events

感谢@Evk 的帮助

【讨论】:

    【解决方案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;
        }
    }
    

    【讨论】:

    • 感谢您的回答,我已经找到了解决方案,请参阅我的帖子,类似
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    相关资源
    最近更新 更多