ASP.NET C# WebSocket

本文关键字:WebSocket NET ASP | 更新日期: 2023-09-27 18:17:40

我已经创建了一个ASP。NET c#项目,它由一个web表单和一个WebSocket处理程序组成。我想发送2个数据(名称&价格数据)从JSON字符串格式的web表单到WebSocket处理程序。下面是web表单中的代码片段:

            ws.onopen = function()
           {
               var name = "Client Product";
               var price = 10.8;
               ws.send(JSON.stringify(name));
               ws.send(JSON.stringify(price));
              alert("Message is sent...");
           };

在WebSocket处理程序的OnMessage(string)方法中,我想检索web表单发送的2个数据,并将2个数据反序列化为c#格式。下面是WebSocket处理程序中的代码片段:

     public override void OnMessage(string message)
    {
        string serverName="";
        string serverPrice = "";
        serverName = JsonConvert.DeserializeObject<string>(message);
        serverPrice = JsonConvert.DeserializeObject<string>(message);
    }

然而,在WebSocket处理程序的onMessage(string)方法下,变量serverName和serverPrice都将被分配为"Client Product"。我希望变量serverPrice被分配为"10.8",而不是"客户端产品"。

谁能告诉我怎么才能做到这一点?如果你能帮助我,我将非常感激:)谢谢:)

ASP.NET C# WebSocket

如果您希望在单个JSON消息中发送多个数据块,则需要将它们组合成一个对象。试试这样:

客户端:

ws.onopen = function()
{
    var obj = {
        name: "Client Product",
        price: "10.8"
    };
    ws.send(JSON.stringify(obj));
    alert("Message is sent...");
};

服务器端:

public override void OnMessage(string message)
{
    MyData obj = JsonConvert.DeserializeObject<MyData>(message);
    string serverName = obj.Name;
    string serverPrice = obj.Price;
    ...
}
public class MyData
{
    // Important: these JsonProperty attributes MUST match
    // the names of the properties in the client object
    [JsonProperty("name")]
    public string Name { get; set; }
    [JsonProperty("price")]
    public string Price { get; set; }
}