我有一個爲我正在創建的應用程序設置的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?我已經閱讀了一些在別人的案例中提出這些問題的東西,但我幾乎不知道套接字的底層實現。
我剛剛開始瀏覽您的鏈接,但這是我尋找的路徑。謝謝! – Xenalin