我如何在桌面 .net 应用程序中接收来自 URL 的推送通知?我如何观察 URL 的回复
how do i receive push notification from URL in desktop .net application? How do i observe a response from URL
解释:
Couchbase 同步网关提供了一种推送通知的更改提要,它基本上会发出它接收到的更改。
Url 看起来像
localhost:4984/db/_changes?style=main_only&active_only=false&include_docs=true&doc_ids=1212&feed=normal&filter=_doc_ids
简单来说,这会在客户端(浏览器)和服务器(同步网关)之间保持连接打开,一旦收到新的更改,它就会通知浏览器有更改。
问题: 我一直在尝试制作一个 .net 桌面应用程序,这样我就可以显示从 URL 收到的更改,而不是使用浏览器,我想使用桌面应用程序。
正在收到我们希望log/validate/transfer某些第三方系统的更改。
我试过 node JS,可以用;但是,我找不到任何可以在 .net 中实现它的方法。
我试过 Signal R 客户端,但它有局限性,无法正常工作。
我正在尝试围绕观察者模式制定解决方案;我如何观察 URL 响应?轮询不是一种选择,否则我会实施解决方案。
您可以尝试创建到 url 的 http 连接,然后读取流中的更改。
我会尽快更新示例。
参考
SSE Client request which does not terminate c#
我试过这个..似乎工作正常..感谢您的建议,这是非常原始的代码我需要改进它以准备好生产。
using (var client = new HttpClient(handler, true))
{
client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);
var request = new HttpRequestMessage(HttpMethod.Get, API_URL);
try
{
using (var response = client.SendAsync(
request, HttpCompletionOption.ResponseHeadersRead).Result)
{
using (var body = await response.Content.ReadAsStreamAsync())
using (var reader = new StreamReader(body))
while (!reader.EndOfStream)
Console.WriteLine(reader.ReadLine());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
解释:
Couchbase 同步网关提供了一种推送通知的更改提要,它基本上会发出它接收到的更改。
Url 看起来像
localhost:4984/db/_changes?style=main_only&active_only=false&include_docs=true&doc_ids=1212&feed=normal&filter=_doc_ids
简单来说,这会在客户端(浏览器)和服务器(同步网关)之间保持连接打开,一旦收到新的更改,它就会通知浏览器有更改。
问题: 我一直在尝试制作一个 .net 桌面应用程序,这样我就可以显示从 URL 收到的更改,而不是使用浏览器,我想使用桌面应用程序。
正在收到我们希望log/validate/transfer某些第三方系统的更改。
我试过 node JS,可以用;但是,我找不到任何可以在 .net 中实现它的方法。
我试过 Signal R 客户端,但它有局限性,无法正常工作。
我正在尝试围绕观察者模式制定解决方案;我如何观察 URL 响应?轮询不是一种选择,否则我会实施解决方案。
您可以尝试创建到 url 的 http 连接,然后读取流中的更改。
我会尽快更新示例。
参考 SSE Client request which does not terminate c#
我试过这个..似乎工作正常..感谢您的建议,这是非常原始的代码我需要改进它以准备好生产。
using (var client = new HttpClient(handler, true))
{
client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);
var request = new HttpRequestMessage(HttpMethod.Get, API_URL);
try
{
using (var response = client.SendAsync(
request, HttpCompletionOption.ResponseHeadersRead).Result)
{
using (var body = await response.Content.ReadAsStreamAsync())
using (var reader = new StreamReader(body))
while (!reader.EndOfStream)
Console.WriteLine(reader.ReadLine());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}