Пример #1
0
 public void Connect()
 {
     _client.RegisterListener(_channel, _listener);
     _client.handshake();
     _client.waitFor(1000, new[] { State.CONNECTED });
     //_client.getChannel(_channel).subscribe(_listener);
 }
        public void Connect()
        {
            Console.WriteLine("Handshaking.");

            _bayeuxClient.handshake();
            _bayeuxClient.waitFor(1000, new[] { BayeuxClient.State.CONNECTED });

            Console.WriteLine("Connected.");

            _bayeuxClient.getChannel(channel).subscribe(new Listener());
            Console.WriteLine("Waiting for data from server...");
        }
 public async Task StopAsync(CancellationToken cancellationToken)
 {
     // TODO:  Update BayeuxClient library to use async methods
     await Task.Factory.StartNew(() =>
     {
         logger.LogInformation("SalesforceStreamingService.StopAsync has been called.");
         logger.LogInformation("Disconnecting from Salesforce...");
         bayeuxClient.disconnect();
         bayeuxClient.waitFor(1000, new[] { BayeuxClient.State.DISCONNECTED });
     });
 }
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            appLifetime.ApplicationStarted.Register(OnStarted);
            appLifetime.ApplicationStopping.Register(OnStopping);
            appLifetime.ApplicationStopped.Register(OnStopped);

            logger.LogInformation("SalesforceStreamingService.StartAsync has been called.");

            logger.LogInformation("Authenticating with Salesforce...");
            var authToken = await salesforceClient.GetToken();

            logger.LogInformation("Enabling Bayeux protocol...");
            var options = new Dictionary <String, Object>
            {
                { ClientTransport.TIMEOUT_OPTION, readTimeOut }
            };
            var transport = new LongPollingTransport(options);

            // add the needed auth headers
            var headers = new NameValueCollection();

            headers.Add("Authorization", "OAuth " + authToken.AccessToken);
            transport.AddHeaders(headers);

            // only need the scheme and host, strip out the rest
            var    serverUri = new Uri(authToken.InstanceUrl);
            String endpoint  = String.Format("{0}://{1}{2}", serverUri.Scheme, serverUri.Host, sfOptions.StreamEndpoint);

            bayeuxClient = new BayeuxClient(endpoint, new[] { transport });

            logger.LogInformation("Handshaking with Salesforce stream...");
            bayeuxClient.handshake();
            bayeuxClient.waitFor(1000, new[] { BayeuxClient.State.CONNECTED });

            logger.LogInformation("Connected to Salesforce stream...");

            bayeuxClient.getChannel(sfOptions.Channel).subscribe(new Listener(logger));
            logger.LogInformation("Waiting for data from server...");
        }