如何使用Starscream从iOS应用程序连接到ASP.NET Core SignalR套接字?

时间:2017-12-09 15:49:47

标签: c# ios asp.net swift starscream

我正在尝试构建一个简单的实时应用程序,但是当我连接时,它会在几秒钟后断开连接。

我还假设必须有一种方法来调用我在服务器上实现的“发送”方法。我知道存在用于iOS“SignalRObjc”的SignalR客户端,但它会给我带来问题。

问题是: 如何在服务器上调用特定方法? 为什么会自动断开连接? 我在服务器或客户端实现中犯了一些错误吗?

//服务器 // ASP.NET核心SignalR

   public class ChatHub : Hub
   {
    public override Task OnConnectedAsync()
    {
        Debug.WriteLine("Connected cleint with ID :" + Context.ConnectionId);
        return base.OnConnectedAsync();
    }
    public void Send(string message)
    {
        Clients.All.InvokeAsync("New", message);
        Debug.WriteLine("Message invoked");
    }
    public override Task OnDisconnectedAsync(Exception exception)
    {   
        return base.OnDisconnectedAsync(exception);
    }
}

// iOS应用程序

   var socket = WebSocket(url: URL(string: "ws://localhost:50290/api/chat")!)

   func websocketDidConnect(socket: WebSocketClient) {
    print("Socket connected")
   }
   func websocketDidDisconnect(socket: WebSocketClient, error: Error?)        {
    print("Socket disconnected")
}
    func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
    print(text)
}
    func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
    print(data)
}

}

我还在viewDidLoad方法中设置了socket.delegate = self,并发送了一条简单的消息        socket.write(string:“hello”)

socket.write方法中有一个永远不会被调用的完成块

此外,即使我尝试从服务器发送内容,也从不调用接收消息方法。

0 个答案:

没有答案