2017-10-10 10 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サーバーのエンドポイントに接続しても問題はありません。しかし、私が見つけたものから、第三者のライブラリが非常にお勧めしており、私は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 

は、Java ServerSocketのにスタースクリームのWebSocketをからの接続に問題のいくつかの種類がありますか?私は、他のケースでこのような問題を示唆するものを少し読んだが、ソケットの基本的な実装についてはほとんど知らなかった。

答えて

1

サーバーにthe WebSockets protocolが実装されていないようです。

WebSocketはではありません。は単にTCP接続です。特定のHTTPベースのハンドシェイクを使用し、ストリームにフレーミングを追加します。 implement this yourselfには可能ですが、可能であればライブラリを使用するようお勧めします。a number of perfectly good implementations availableがあります。

+0

私はちょうどあなたのリンクを見て始めましたが、これは私が探していた道です。ありがとう! – Xenalin

関連する問題