C#Websocket-交换消息(数据类型?)

时间:2019-05-06 05:23:59

标签: c# websocket

我正在用C#设置Websocket,但在理解客户端/服务器跨解决方案通信时遇到问题。我已经为客户端和服务器创建了解决方案(.sol)。 “ WebSocketSharp”和“ Newtonsoft.Json”是我正在使用的两个库。我有C#(VS)的经验,但没有Websockets或序列化的经验。将不胜感激任何帮助。好,关于这个问题...

该应用程序托管着拍卖,该拍卖会在侦听客户出价请求的同时与客户沟通产品和出价信息。服务器将产品数据广播到客户端,并且服务器在Product.cs文件 BUT 中定义了Product对象,因为这两个解决方案都是独立的,所以我不知道如何让他们共享一个定义而不重复定义Server.sol解决方案中的“ Product.cs”文件和Client.sol解决方案中的“ Product.cs”文件。

我想知道我们是否可以使用跨解决方案的参考文献或类似的东西来进行清理。也许服务器可以以某种方式将这种数据类型直接传递给客户端,但是我不知道这种策略。

这是一个例子...

    public void BroadcastNewProduct(Product product) // "lets broadcast this new product that is being auctioned"
    {
        Sessions?.Broadcast(JsonConvert.SerializeObject(new Tuple<string, Product>("S_NewProductAlert", product))); // "we will clarify our message type with a tuple"
    }
    public void ReceiveNewProductMessage(void message)
    {
        Tuple<string, object> tuple = JsonConvert.DeserializeObject<Tuple<string, object>>(message); // "lets deserialize"
        switch(tuple.item1) // "lets see what type of message this is, by evaluating the header"
        {
            case "S_NewProductAlert": // "looks like the object is a new Product"
                productList.Add((Product)tuple.Item2);  // "so lets cast .. but wait, this requires a local Product definition too (which is redundant)"
            // "the server already has a definition for Product, but since it is defined in a separate solution, I can't access it!"
                break;
        // ... 
        } 
    } // Thanks for any help in advance :)

对于客户端和服务器之间的“元组”通信方式,我也感到很尴尬,因此,我也很感谢任何数据类型建议。封装GetType()或从抽象的“ Message”类继承是我考虑过的想法,但最主要的问题是共享非原始数据类型。谢谢!

0 个答案:

没有答案