2017-10-10 169 views
0

我有一個爲我正在創建的應用程序設置的Java服務器。 Java服務器在嘗試連接時需要新客戶端:無法將Starscream WebSocket連接到Java ServerSocket

//Continuously accept new user clients 
    try(ServerSocket serverSocket = new ServerSocket(portNumber)){ 

     while(!Thread.currentThread().isInterrupted()){ 

      //I do some stuff here 
      ... 
      //Then accept the socket 
      Socket s = serverSocket.accept(); 

      //Then I do stuff with s; the user is connected 
      ... 

     } 

    } catch (IOException e) { 
     System.err.println("Could not listen on port "+portNumber); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     e.printStackTrace(); 
    } 

在Android上,我只是使用Socket類,而且我沒有問題。它連接到在AWS上運行在EC2上的Java服務器的端點,我沒有問題。但是,從iOS發現的情況來看,第三方庫很受推薦,我已經決定使用Starscream(目前)。

我不能得到簡單的連接示例工作(在Starscream github頁上的那個)。有一些教程如this用Node.js設置了一個本地服務器,但我寧願不加入,因爲我已經有了一個「非常簡單的服務器」。

這裏是我的SWIFT代碼:

class ViewVontroller: UIViewController, WebSocketDelegate{ 
    var socket = WebSocket(url: URL(string: "ec2-12-345-678-910.compute-1.amazonaws.com/:4922/")!) 

    override func viewDidLoad(){ 
     super.viewDidLoad() 
     socket.delegate = self 

     print("connecting") 
     socket.connect() 
     print("should've connected") 
    } 
    ... //The rest of the protocol is implemented below with simple print statements as the body 

它輸出:

connecting 
should've connected 
[timestamp/project name...] [] nw_connection_get_connected_socket_block_invoke 1 Connection has no connected handler 
Websocket disconnected: The operation couldn't be completed. Operation timed out 

是否有某種問題與紅蜘蛛的WebSockets連接到Java的ServerSocket?我已經閱讀了一些在別人的案例中提出這些問題的東西,但我幾乎不知道套接字的底層實現。

回答