问题标签 [swift-nio]

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 回答
2181 浏览

swift-nio - SwiftNIO:发送和接收 UDP 广播

我正在尝试使用 SwiftNIO 构建 TCP 服务器。服务器在网络中启动,但客户端不知道 IP 地址。因此,我也想启动一个 UDP 服务器,如果客户端出现,他会向网络发送广播消息。服务器将接收并回答,以便客户端现在知道 IP 地址。

是否可以使用 SwiftNIO 构建类似的东西?

0 投票
1 回答
838 浏览

ios - 如何使应用程序允许与 SwiftNIO 的传入网络连接?

我正在使用MicroExpress在应用程序中创建 Web 服务器SwiftUI。当我在模拟器中运行应用程序时,我可以连接到服务器,但我无法让它在我的真实设备上运行。

MicroExpress(基于SwiftNIO)在 iPhone 上创建一个 Web 服务器,并在本地网络中公开一个 API。

我想我需要添加一个功能或其他东西,但我找不到网络功能,也找不到允许传入网络连接的Xcode 11设置Signing & Capabilities

如何使应用程序允许传入网络连接?

编辑

如果有必要,我已经添加Allow Arbitrary Loads了允许。HTTP我现在正在连接HTTP

0 投票
1 回答
4122 浏览

swift - 如何在 Swift 中正确使用 EventLoopF​​uture?

我是 EventLoop 期货和承诺的新手。我的软件堆栈:

  • Go + gRPC 中的后端
  • Swift + SwiftUI + GRPC + NIO 中的 iOS 客户端

我有一些工作要做,并正在寻找有关如何改进它的建议,因为我在 , , 等周围的文档中有点.map迷失.flatMap.always

这是我在 iOS 应用程序中的 gRPC 数据单例中的一个相关函数:

我在 SwiftUI 视图中的代码:

我应该重构getItem和/或readItem吗?有什么具体建议吗?

0 投票
1 回答
871 浏览

swift - 如何使用 async-http-client

我正在尝试执行async-http-clientdoku 的示例。但不幸的是,闭包中的代码没有被执行。为什么?

在控制台中我得到:Program ended with exit code: 0。所以它执行成功。但是控制台中没有打印语句。

谢谢!

0 投票
1 回答
107 浏览

swift - 使用 async-http-client 进行摘要式身份验证

我正在尝试在 swiftNIO 之上使用 async-http-client 实现摘要身份验证。因此我使用了一个使用 HTTPClientResponseDelegate 协议的类。在这堂课中

我解析第一个服务器响应并为响应生成哈希。现在我必须用我的哈希构造 Authorization 标头,符合摘要式身份验证。但是我怎样才能从我的班级再次将它发送到服务器?我必须创建一个新的 HTTPClient.Request 还是可以直接从我的班级中使用标题做出响应?也许有人可以给我一个提示,如何使用 swiftNIO 和 async-http-client 来实现这一点。

谢谢阿诺德

0 投票
1 回答
694 浏览

netty - Swift-NIO TCP Client 自动重连

我在 Swift-NIO 中编写了一个 TCP Client 来连接 Netty TCP Server。我希望 tcp 客户端可以在需要时自动重新连接。

它与作品有关,但有些不对劲。我使用 eventLoop.scheduleRepeatedTask 每 10 秒检查一次,连接后取消 RepeatedTask。但是 self.task?.cancel() 不起作用,我查看了取消的源代码。取消重复任务的正确方法是什么?谢谢

是的,任务为零,所以取消不起作用。我将全局变量更改为静态

现在工作正常。

但我仍然不确定在 Swift-NIO 中自动重新连接的最佳实践是什么。在我的 Android 应用程序中,我像这样将 Netty 用于 TCP 客户端

我使用 ReconnectHandler 进行重新连接,使用 getConnectionListener 进行监听。在 Swift-NIO 中是否有类似的 Listener 或其他解决方案?

0 投票
0 回答
193 浏览

swift - Swift Digest 身份验证 async-http-client

我正在尝试在 swiftNIO 之上使用 swift 创建摘要身份验证。最后我收到以下错误:操作无法完成。(NIO.NIOConnectionError 错误 1。)

这是我的做法:

然后在主线程中我执行以下操作:

不幸的是,我没有找到其他方法来创建标题。我必须传递“”的值,因为响应头必须是(维基百科):“授权:”,然后是其余的。这是我生成的响应标头的示例: [("Authorization: Digest username=\"myuser\",realm=\"Testserver\",nonce=\"4F4L1eHYktYv6n7LR4s5yyL5uMiVgKSg\",uri=\" http://myurl \" ,响应=\"4bc3cdfc727bec9edebf6a55dac677a7\"", "")]

我不确定这个错误:是因为我的 headerresponse 还是因为我从主线程而不是我的委托内部创建了一个新请求,但 httpclient 始终是同一个实例。如果它位于标头响应上,似乎没有办法使用 async-http-client 将响应字符串直接写入标头。

谢谢阿诺德

0 投票
1 回答
441 浏览

swift - 将循环阻塞代码重写为 SwiftNIO 风格的非阻塞代码

我正在开发一个将从网络读取数据的驱动程序。它不知道响应中有多少,除了当它尝试读取并返回 0 字节时,它就完成了。所以我的阻塞 Swift 代码看起来很天真:

我如何将其重写为将继续运行直到读取整个结果的承诺?在试图将我的大脑包裹起来之后,我仍然被困在这里:

我应该补充一点,我可以重写 read() 而不是返回 [Byte] 返回 EventLoopF​​uture<[Byte]>

0 投票
2 回答
593 浏览

swift - SwiftNIO 和 Vapor 中的链式投掷期货

在 Vapor 4 中,我通过在 3rd 方 API 上调用请求并根据我返回的结果返回一个值来处理发布请求。以下代码导致错误:“从抛出函数...到非抛出函数的无效转换”

获得 API 结果后,我似乎无法try在我的链中使用。如果我在地图内部添加一个,map()上面的代码将起作用,但理想情况下我想捕捉这个错误。创建响应主体时使用的第一个似乎隐式传递回链,但不是第二个。!trylet response = try response.content.decode(ResponseModel.self)try

我究竟做错了什么?解码响应内容时如何捕获错误?为什么第一个try被抓到,第二个没有被抓到?

0 投票
1 回答
792 浏览

swift - TLS CA 证书 SSL Pinning 使用 SWIFT-NIO-SSL

我一直在尝试使用SWIFT-NIO-SSL,使用 CA 证书和服务器证书连接到服务器。

经过数字尝试并尝试了不同的方法,我找不到解决方案。是否有任何教程或任何帮助使用带有 swift-nio-ssl 的 ca 证书连接到 TLS 会有所帮助。