Я настраиваю Websocket в C # и у меня возникают проблемы с пониманием взаимодействия между клиентом и сервером.Я создал решение (.sol) для клиента и решение для сервера.«WebSocketSharp» и «Newtonsoft.Json» - две библиотеки, которые я использую.У меня есть опыт работы с C # (VS), но не с веб-сокетами или сериализацией.Буду очень признателен за любую помощь.Хорошо, о проблеме ...
В приложении размещается аукцион, который сообщает клиентам информацию о продукте и цене предложения, одновременно прослушивая запросы клиентов.Сервер передает данные продукта клиентам, а сервер определяет объект Product в файле Product.cs НО , поскольку оба решения независимы, я не знаю, как разрешить им совместно использовать определение без избыточного определенияФайл «Product.cs» в решении Server.sol и файл «Product.cs» в решении Client.sol.
Мне интересно, можем ли мы это исправить с помощью ссылки на перекрестное решение иличто-то.Возможно, сервер может каким-то образом передать этот тип данных непосредственно клиенту, но я не знаю такой стратегии.
Вот пример ...
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 :)
Я также чувствую себя неловко«Tuple» - средство связи между клиентом и сервером, поэтому я также буду признателен за любые предложения по типам данных.Инкапсуляция GetType () или наследование от абстрактного класса «Message» - это идеи, которые я рассмотрел, но главная проблема заключается в совместном использовании не примитивных типов данных.Спасибо !!