Я использую .netcore с VS Community Edition на моем Mac и хотел бы использовать SignalR для iOS-приложения, использующего SwiftR
Я получил рабочий проект прямо отсюда: https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.1&tabs=visual-studio-mac
и запускал его локально, и он работал внутри visual studio - он работал на localhost: 5000, и я даже использовал примерное представление, которое они должны были выполнить для некоторых команд SignalR.Все выглядело великолепно! Это работает!
Теперь я пытаюсь использовать 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.])
Действительно ценю любую проницательность, которую кто-либо может предложить!