SignalR в Swift с использованием SwiftR - ошибка во время запроса согласования - PullRequest
0 голосов
/ 05 октября 2018

Я использую .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.])

Действительно ценю любую проницательность, которую кто-либо может предложить!

1 Ответ

0 голосов
/ 05 октября 2018

SwiftR не поддерживает ASP.NET Core SignalR, вместо этого вы можете попробовать https://github.com/moozzyk/SignalR-Client-Swift.Хотя это не говорит конкретно о клиенте iOS, ASP.NET SignalR и ASP.NET Core SignalR - это разные продукты https://docs.microsoft.com/en-us/aspnet/core/signalr/version-differences?view=aspnetcore-2.1

...