如何初始化websocket指定为天蓝色webjob?

问题描述

我有Web套接字端点,想初始化并在每次数据输入后连续调用它 可从api获得。

我创建了自觉运行的Azure Web作业,但不确定如何/在何处添加web socket ticker service 代码,这些代码将连续运行并从api获取数据。

Program.cs

class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        var host = new JobHost(config);
 
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    }
}

TickerService.cs

 class TickerService
    {
        private Ticker _ticker; // THIS OBJECT YOU WILL GET IT FROM KITECONNECT
        private string _myAccessToken;
        private UInt32[] intrument_tokent = new UInt32[] { 256265 };

        public TickerService(string myAccessToken)
        {
            this._myAccessToken = myAccessToken; // THIS TOKEN IS ONE WHICH WE GET AFTER LOGIN. 
            initTicker();
        }

        private void initTicker()
        {
            _ticker = new Ticker("apikey",this._myAccessToken);

            _ticker.OnTick += OnTick;
            _ticker.OnReconnect += OnReconnect;
            _ticker.OnNoReconnect += OnNoReconnect;
            _ticker.OnError += OnError;
            _ticker.OnClose += OnClose;
            _ticker.OnConnect += OnConnect;
            _ticker.OnOrderUpdate += OnOrderUpdate;

            _ticker.EnableReconnect(Interval: 5,Retries: 50);

            //init and connect to web socket api
            _ticker.Connect();

            // Subscribing to BANKNIFTY and setting mode to FULL MODE 
            _ticker.Subscribe(Tokens: intrument_tokent); // <- THIS METHOD USED FOR SUBSCRIPTION
            _ticker.SetMode(Tokens: intrument_tokent,Mode: Constants.MODE_FULL); // <- THIS METHOD USED FOR SETTING MODE
        }

        private void OnTokenExpire()
        {
            Console.WriteLine("Need to login again");
        }

        private void OnConnect()
        {
            Console.WriteLine("Connected ticker");
        }

        private void OnClose()
        {
            Console.WriteLine("Closed ticker");
        }

        private void OnError(string Message)
        {
            Console.WriteLine("Error: " + Message);
        }

        private void OnNoReconnect()
        {
            Console.WriteLine("Not reconnecting");
        }

        private void OnReconnect()
        {
            Console.WriteLine("Reconnecting");
        }

        private void OnTick(Tick TickData)
        {
            ProcessTick(TickData);
        }

        private void OnOrderUpdate(Order OrderData)
        {
            Console.WriteLine("OrderUpdate " + Utils.JsonSerialize(OrderData));
        }
        //Method wch listen data,here you will get LTP 
        private void ProcessTick(Tick tickData)
        {
            try
            {
                var candleTickData = new List<CandleTickData>();

                var tickDataHis = new CandleTickData()
                {
                    InstrumentID = tickData.InstrumentToken,Close = tickData.LastPrice,High = tickData.LastPrice,Low = tickData.LastPrice,Open = tickData.LastPrice,TimeStamp = tickData.Timestamp.HasValue ? tickData.Timestamp.Value : DateTime.Now,Volume = tickData.Volume

                };

                candleTickData.Add(tickDataHis);
                // TODO:->Logic here to generate and process 5 min candle

            }
            catch (Exception ex)
            {

            }
        }
    }

    class CandleTickData
    {
        public uint InstrumentID { get; set; }
        public decimal Close { get; set; }
        public decimal High { get; set; }
        public decimal Low { get; set; }
        public decimal Open { get; set; }
        public DateTime TimeStamp { get; set; }
        public uint Volume { get; set; }
    }

问题-将TickerService.cs实施为的正确方法是什么 Program.cs

解决方法

在控制台从程序中,该程序从上到下运行,因此只需要定义一次TickerService。

赞:

class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        var host = new JobHost(config);

        // The following code ensures that the WebJob will be running continuously
        
        TickerService _tickerservice=new TickerService();
        while(true){
            // The specific judgment conditions are based on actual scenarios.
            if(_tickerservice._myAccessToken==null){
                _tickerservice=new TickerService();
            }
        }
        
        host.RunAndBlock();
    }
}

我们找不到Ticker软件包,因此,仅提供一般情况下的方法仅供参考。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...