问题标签 [sendasync]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
203 浏览

java - 如何在异步httpclient java 11中将多个异步get请求的响应写入单个文件?

我可以像这样在 java 11 中使用 httpclient 下载单个媒体文件

上面的代码片段从 url 下载 .ts 文件。它已正确下载。

现在,我有 url 列表,List<URI> urls. 我对 url 列表进行了异步调用,并通过添加Executor service. 我卡住的地方是,如何将响应列表写入单个文件。

到目前为止我写的代码:

在执行结束时创建的文件sample.ts没有请求的响应。如果您了解我的问题的要点,任何人都可以为这个问题提出替代解决方案。

0 投票
0 回答
130 浏览

asp.net-core - DotNetCore 中的 HttpClient.SendAsync - 是否可能出现死锁?

TaskCanceledException根据我们的日志,我们偶尔会收到一个调用,该调用在我们为请求配置的超时时间内很好地完成。第一个日志条目来自服务器。这是该方法在返回 JsonResult(MVC 4 控制器)之前注销的最后一件事。

在这种情况下,请求大约需要 5 分钟才能完成。然后 30 分钟后,我们的调用者从以下位置抛出任务取消异常HttpClient.SendAsync

鉴于在发出请求的过程中我们阻止了异步调用(.Result——遇到不支持异步的棕地缓存实现),我的第一个猜测是我们遇到了Stephen Cleary所描述的死锁。但是调用者是 dotnetcore 3.1 应用程序,所以这种死锁是不可能的。

我认为我们的使用HttpClient非常标准。这是最终进行调用的方法:

我们对这种行为的理论感到茫然。在几百个成功的请求中,我们已经看到每月 3-5 次任务取消,所以它是间歇性的,但绝非罕见。

我们还应该在哪里寻找像死锁一样的行为的根源?

更新

可能需要注意我们正在使用标准HttpClientHandler。最近添加了重试策略,但是我们不会在长时间运行的 POST 上重试,就是上面的场景。

0 投票
1 回答
435 浏览

c# - 仅通过 Asp.Net Core WebSocket 单向发送消息

我正在开发一个 C# Asp.NET Core 应用程序,其中客户端将通过 JavaScript WebSocket 连接到服务器,而服务器本身将是唯一可以向连接的客户端发送消息的东西。

客户端不会将消息发送回服务器,如果他们设法通过在任何浏览器控制台中手动发送消息到服务器,服务器将忽略它们。

这是我用来向所有连接的客户端发送消息的 C# 代码示例:

由于我不希望客户端将消息发送回服务器(因为这应该是单向消息流),因此后续调用:

在调用“SendAysnc()”后立即需要吗?调用“SendAsync()”后不调用“ReceiveAsync()”的缺点/后果是什么?

我在 MS 的文档中找不到任何内容说在调用“SendAsync()”之后需要调用“ReceiveAsync”(尽管大多数在线示例都这样做)并且两种方法(根据 MS 文档)都声明“此操作不会堵塞。”

我在这里主要关心的是,是否持续只发送消息而不接收任何返回可能会导致许多“SendAsync()”调用堆积的内存泄漏,因为它期望一些“响应”返回或服务器断开客户端( s) 因为没有消息从通信通道的另一端发回,服务器认为客户端已经掉线。

问候。

0 投票
1 回答
1466 浏览

api - .NET:无法从传输连接读取数据:I/O 操作已中止

下面的代码在 .NET 控制台应用程序中工作,但在 .NET 核心控制台应用程序中不工作。

在 .NET Core 控制台应用程序中,我收到错误消息

而且InnerException

0 投票
1 回答
221 浏览

blazor - 尽管 Fiddler 显示收到了正确的响应,但 Blazor WASM 上的 HttpClient.SendAsync 返回空的 HttpResponseMessage

我的 Blazor 页面代码:

尽管我在 Fiddler 上看到返回了实际结果,但响应总是返回空。在 Google Chrome 上,我看到服务器以正确的标头响应 200,但不知何故 Chrome 显示“加载响应数据失败”。

提琴手 SS

Chrome 上没有错误,我收到 200 响应,但它以某种方式无法显示响应内容:

铬 200

Chrome 无法显示响应内容

你可以在调试器中看到响应对象是空的..

空响应对象

我该如何解决这个问题,我在这里缺少什么?

谢谢!

0 投票
1 回答
29 浏览

.net - 与 System.Net.WebSockets.SendAsync 同步发送

我都赞成多线程和异步任务,但放开控制不是我的一杯茶。

我正在做一个项目,其中一个进程通过 websockets 与多个目标进行通信,并且发送显然应该尽可能快,但必须相互同步。考虑将视频流同时传输到多个设备。因此,我不想在目标接收到第一帧之前继续发送下一帧。

使用.net WebSockets时,我已经尝试过使用HttpListner和Kestrel实现(我猜它或多或少相同),然后socket.SendAsync似乎在发送之前接收数据并在本地缓冲它,返回TaskCompleted 在实际发送之前完成。这意味着发送任务基本上是瞬间完成的。

我当然“可以”实现一个 ACK​​ 模式,接收者在收到整个数据包时发送一个 ACK​​,但这本身会减慢进程,我想避免这种情况,因为系统本身已经知道这一点,因为它确实会尝试连续发送排队的包裹。

这基本上是负责发送数据的代码,以 2048b 为单位:

我会假设这里的 await 实际上会等待传输完成,这是不做的,但它似乎在等待任务完成。

在接收方,这是处理数据,前后有调试响应:

发送方的日志显示如下:

  • 线程 28 是发送线程,它完成得非常快。它需要发送 6198 个字节并将其分成 4 次传输。这显然是在第一个数据包离开服务器之前完成的。
  • 其余线程是调试响应的异步接收者。
  • (大小差异是由于数据的加密)

现在,我对这个 WebSocket 实现的理解全错了吗?是否不可能对数据发送的完整性进行回调/事件或类似的操作?我可以通过其他方式实现这一目标吗?同步执行这个真正的同步将是一个解决方案,但我似乎无法强制这样做。

啊!

0 投票
1 回答
46 浏览

c# - C# HttpClient.SendAsync 导致错误,无法发送具有此动词类型的内容主体

我收到错误cannot send a content-body with this verb-type。我正在从 C# VSTO 桌面应用程序调用 GET Endpoint。我究竟做错了什么。

结束点如下所示: