public static void OnAzMessageReciver(object sender, MessageReceivedEventArgs args) { //获取快照数据 if (args.Command == CommandType.MarketDepthData) { var model = ProtobufHelper.Deserialize <MarketDepthDto>(args.Message); DepthDto depthResult = ConvertDepth(model); Depth.AddOrUpdate(model.Market, depthResult, (key, v) => { return(depthResult); }); } else if (args.Command == CommandType.MarketDepthDiff) { var diffModel = ProtobufHelper.Deserialize <MarketDepthDiff>(args.Message); //深度无快照,或者快照数据的版本与差异数据起始版本不一致时,重新订阅获取快照 if (!Depth.ContainsKey(diffModel.Market) || Depth[diffModel.Market].Version != diffModel.StartVersion) { azWebsocket.SendMarketDepth("eth_btc"); } else { UpdateDepth(diffModel); } } Console.WriteLine("数据更新"); }
/// <summary> /// 接收消息 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void ReceivedMsg(object sender, WebSocket4Net.DataReceivedEventArgs args) { var msg = args.Data; var codeArray = new byte[2] { msg[0], msg[1] }; var code = (int)ProtobufHelper.GetCommand(codeArray); OnMessage?.Invoke(null, new MessageReceivedEventArgs(msg, (CommandType)Enum.Parse(typeof(CommandType), code.ToString()))); }
public void SendMarketDepth(string market) { var topicObj = new SubMarketDepth() { Market = market, Limit = 10, Precision = 5 }; SendSubscribeTopic(ProtobufHelper.Serializer(topicObj, 906)); }
public void SubMarketDepth(string market) { var topicObj = new SubMarketDepth() { Market = market, Limit = 10, Precision = 5 }; topicDic.Add("Depth", ProtobufHelper.Serializer(topicObj, 906)); }
public void SubMarketOrder(string market) { var topicObj = new SubMarketOrder() { Market = market, Count = 10, Subscribe = true }; topicDic.Add("Order", ProtobufHelper.Serializer(topicObj, 907)); }
public void SubUserOrderInfo(string[] markets) { foreach (var market in markets) { var topicObj = new LoginToMarket() { Market = market }; topicDic.Add(market + "loginM", ProtobufHelper.Serializer(topicObj, 1000)); } }