流内容不断更新8x8流服务



我尝试创建一个简单的控制台应用程序。

我们有一个来自8x8的呼叫系统,该系统提供了网络流API,但它们的文档非常有限,在C#中没有任何内容。

API服务流呼叫状态接近实时,我想获取该"流",并能够在可能的情况下实时阅读和处理。响应或内容类型是"文本/html"。但是,响应的实际主体可以声明为JSON-下面的样本:

{"互动":{" entacteddata":{" entacteddatum":[{" entacteddatakey":"@pri"," entacteddatavalue":100},{" ntacteddatakey":" nacteddatakey":" calleDdatavalue"," calleddatavalue"},{" contacteddatakey":" cha"," contacteddatavalue":999999999999},{" entacteddatakey":" cnt":" cnteddatavalue":0}:0},{"{" ntacteddatakey":" med"," nacteddatavalue":" t"},{" contacteddatakey":" pho"," contacteddatavalue":999999999999},{-01测试"," ResourceType":0}}

我已经看到了有关HTTPCLIENT和GETASYNC方法的几篇文章,但是这些帖子似乎在做出响应时似乎是为了打电话,而不是经常具有响应的内容。

使用提琴手进行调用,它似乎不会关闭,因此流正在不断运行,因此提琴手直到单独的用户或实例连接后才显示任何数据。

当我使用浏览器时,内容被"流"到页面上并自动更新并显示所有内容(如上所述(。

API包含身份验证,因此当另一个客户端连接并检索数据时,连接的客户端关闭,最后我可以看到正在收集的数据。

这是代码,并且当另一个客户连接时确实返回大流,但理想情况下,我想要实时响应,并且似乎只卡在getAsync方法中:

var response = await client.GetAsync(address, HttpCompletionOption.ResponseHeadersRead);

            if (response.IsSuccessStatusCode)
            {
                var responseContent = response.Content;

                string responseString = await responseContent.ReadAsStringAsync();

                Console.WriteLine(responseString);
            }

希望这足以让你们中的一个聪明的人在我的困境中帮助我。

我也遇到了一个问题,这些问题消耗了他们的流媒体API,我发现与Twitter和Couchbase流媒体API一起使用的示例与8x8不起作用。Twitter和Couchbase都会在推动下发送线路终结器,因此解决方案依赖于阅读线来拉动供稿。由于8x8没有发送终止器,因此您需要使用readBlock或更好的readBlockAsync。

以下代码显示了如何使用凭据连接并消耗其提要:

private static async Task StreamAsync(string url, string username, string password)
    {
        var handler = new HttpClientHandler()
        {
            Credentials = new NetworkCredential {UserName = username, Password = password},
            PreAuthenticate = true
        };
        // Client can also be singleton
        using (var client = new HttpClient(handler))
        {
            client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);
            var request = new HttpRequestMessage(HttpMethod.Get, url);
            request.Headers.Connection.Add("keep-alive");
            using (var response = await client.SendAsync(
                request,
                HttpCompletionOption.ResponseHeadersRead))
            {
                using (var body = await response.Content.ReadAsStreamAsync())
                {
                    using (var reader = new StreamReader(body))
                    {
                        while (!reader.EndOfStream)
                        {
                            var buffer = new char[1024];
                            await reader.ReadBlockAsync(buffer, 0, buffer.Length);
                            Console.WriteLine(new string(buffer));
                        }
                    }
                }
            }
        }
    }

相关内容

  • 没有找到相关文章

最新更新