边缘扩展本机消息传递:处理UWP消息大小限制



我正在为边缘开发一个扩展名,我需要从UWP发送超过1MB的数据。

我将数据分解为小于1MB,并尝试多次发送回复

private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) {
  AppServiceDeferral messageDeferral = args.GetDeferral();
  // This is to be replaced with enumerator
   for (int i = 0; i < number_of_chunks; i++) {
      // construct reply identifying the chunk number and termination
       await args.Request.SendResponseAsync(reply);
   }
   messageDeferral.Complete();
}

在上述循环中发送第二个响应时,应用程序服务将被取消。似乎只有在有相应的请求时才可以发送响应。有人可以确认吗?

UWP中是否有任何替代机制在没有请求的情况下不同步发送数据?

我能想到的另一个选择是将块的逻辑移至背景,感觉不正确。

fwiw,Chrome&amp;Firefox没有这样的限制,我能够将消息异步发送到STDOUT。

更新#1:彼得,恐怕我会遇到相同的错误"第二个发送的方法在意外的时间被调用"。我尝试了以下内容,希望这就是您的意思。

private async void OnAppServiceRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) {
  // This is to be replaced with enumerator
   for (int i = 0; i < number_of_chunks; i++) {
      // construct reply identifying the chunk number and termination
      AppServiceDeferral messageDeferral = args.GetDeferral();
      await args.Request.SendResponseAsync(reply);
      messageDeferral.Complete();
   }
}

您需要调用args.GetDeferral(),以免在第一次悬架呼叫(await)下拆除连接。然后,您需要在完成工作后在延期上致电Complete()

相关内容

  • 没有找到相关文章

最新更新