gpt4 book ai didi

swift - 使用 SwiftR 的 Swift 中的 SignalR - 协商请求期间出错

转载 作者:行者123 更新时间:2023-11-28 05:51:53 29 4
gpt4 key购买 nike

我在我的 Mac 上使用 .netcore 和 VS 社区版,并希望将 SignalR 用于使用 SwiftR 的 iOS 应用

我直接从这里得到了一个工作项目: https://learn.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.1&tabs=visual-studio-mac

并在本地运行它,它在 visual studio 中运行 - 它在 localhost:5000 启动,我什至使用了他们必须执行一些 SignalR 命令的示例 View 。一切看起来都很棒! 有效!

现在我正在尝试利用 SwiftR基本上只是对本地运行的 SignalR 进行简单调用,以证明它在 Swift 中有效。 ( http://localhost:5000/chatHub )

我收到错误:协商请求期间出错

输出是这样的:

started
Error: Optional(["message": Error during negotiation request.])
disconnected

这是我的代码 - 知道发生了什么事吗?我使用的是 Microsoft 提供的确切代码(似乎运行良好),但 Swift 不喜欢它。

在我的播客文件中,我只是使用

pod 'SwiftR'

然后在 misc viewController 中进行测试,我正在这样做:

func testThis()
{
// Client
let connection = SignalR("http://localhost:5000/chatHub")

let simpleHub = Hub("ChatHub")
simpleHub.on("SendMessage") { args in
let message = args![0] as! String
let detail = args![1] as! String
print("Message: \(message)\nDetail: \(detail)")
}

connection.addHub(simpleHub)
connection.starting = { print("started") }
connection.connected = { print("connected: \(connection.connectionID)") }
connection.connectionSlow = { print("connectionSlow") }
connection.reconnecting = { print("reconnecting") }
connection.reconnected = { print("reconnected") }
connection.disconnected = { print("disconnected") }
connection.error = { error in
print("Error: \(error)")

if let source = error?["source"] as? String, source == "TimeoutException" {
print("Connection timed out. Restarting...")
connection.start()
}
}
connection.start()

do {
try
// Invoke server method
simpleHub.invoke("SendMessage", arguments: ["Simple Test", "This is a simple message"])
}
catch {
print(error)
}
// Invoke server method and handle response
do {
try simpleHub.invoke("SendMessage", arguments: ["Simple Test", "This is a simple message"]) { (result, error) in
if let e = error {
print("Error: \(e)")
} else {
print("Success!")
if let r = result {
print("Result: \(r)")
}
}
}
}
catch {
print(error)
}
}

在 viewDidLoad() 中我只是调用 testThis()

我什至修改了 .net 代码以允许这样的 cors:

services.AddCors();

然后再往下

 app.UseCors(cors =>
{
cors.AllowAnyHeader();
cors.AllowAnyOrigin();
cors.AllowAnyMethod();
});

但它仍然继续说

Error: Optional(["message": Error during negotiation request.])

非常感谢任何人可以提供的任何见解!

最佳答案

SwiftR 不支持 ASP.NET Core SignalR,你可以试试 https://github.com/moozzyk/SignalR-Client-Swift反而。虽然这并没有具体讨论 iOS 客户端 ASP.NET SignalR 和 ASP.NET Core SignalR 是不同的产品 https://learn.microsoft.com/en-us/aspnet/core/signalr/version-differences?view=aspnetcore-2.1

关于swift - 使用 SwiftR 的 Swift 中的 SignalR - 协商请求期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658391/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com