Beispiel #1
0
 public void AddWebSocket(PodeWebSocket webSocket)
 {
     lock (WebSockets)
     {
         if (WebSockets.ContainsKey(webSocket.ClientId))
         {
             WebSockets[webSocket.ClientId] = webSocket;
         }
         else
         {
             WebSockets.Add(webSocket.ClientId, webSocket);
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Tickerを受信するWebSocketを追加する
        /// 受信時のイベントを登録する
        /// 後の処理はCandleMakerに任せる
        /// </summary>
        /// <param name="myWebSocket">Tickerを受信するWebSocket</param>
        /// <param name="board">MBoard</param>
        /// <param name="timeScales">時間足リスト、時間が短い順</param>
        public void AddWebSocket(MyWebSocket myWebSocket, MBoard board, List <MTimeScale> timeScales)
        {
            // ローソク作成クラスを作成する
            var candleMaker = CandleMaker.MakeGeneration(Logger,  DbContext, timeScales, board);

            // 受信時のイベント設定
            if (board.Name.StartsWith(SystemConstants.BoardPrefixBitflyer))
            {
                // BFの場合
                myWebSocket.GetMessage += (obj, e) => {
                    var textEvent = e as TextEventArgs;
                    var ticker    = JsonConvert.DeserializeObject <LightningTicker>(textEvent.Text);

                    // tickerをこのWSに対応したローソク作成クラスの一番親に送る
                    candleMaker.Update(new Ticker(ticker));
                };
            }

            // リストに追加
            CandleMakers.Add(board.Name, candleMaker);
            WebSockets.Add(board.Name, myWebSocket);
        }