2016-05-06 8 views
0

私はjavaを初めて使用しています。私はWebSocktサーバーでパフォーマンステストを行っています。私はサーバーと通信するためにjava経由でwebsocketを作成する必要があります。 私はjavax.websocketを使用しましたが、常に失敗しました。以下のように コード:websocket接続にjavaを使用すると失敗しました

WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 
    String uri ="ws://127.0.0.1:8080"; 
    System.out.println("Connecting to"+ uri); 
    try { 
    session = container.connectToServer(MyClient.class, URI.create(uri)); 
     } catch (DeploymentException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 

私は接続を行うために、これを使用し、それが何かを送ったが、私のポイントを満たしていません。

私はちょうど次のネットワークパッケージを手に入れました。

enter image description here

と私は以下のようにjsのコードを使用し、それを作れば...

var target='ws://localhost:7777'; 
var socket = io.connect(target); 

enter image description here

+0

可能です... –

+0

前の投稿に申し訳ありません。それはサーバーの実装のためだった。今私はクライアントの実装のための私のポストを変更しました。 – afzalex

+0

私はこの問題も誤解していると思います。 HTTPリクエストを取得した場合、問題はクライアントのエンドポイント側に依存しないことにあります。しかし、*問題はどこですか?エラーメッセージが表示されますか?それからスタックトレースが必要です。それとも意図した通りに動作しない何かがありますか?そして、最も重要なことは:あなたのファイアウォールは何もブロックしていますかただ完全に無効にしてテストを行うことを確認する。 – Leviathan

答えて

0

あなたが記載されている少なくとも一つの容器プロバイダクラスを持っている必要がありますgetWebSocketContainer()を呼び出すにはファイルMETA-INF/services/javax.websocket.ContainerProviderにあります。

たとえば、org.glassfish.tyrus.container.grizzly.client.GrizzlyContainerProvider またはorg.glassfish.tyrus.client.ClientManagerを使用できます。これらのクラスがプロジェクトで使用できることを確認してください。

は、より多くのドキュメントを参照してください。https://docs.oracle.com/javaee/7/api/javax/websocket/ContainerProvider.html

+0

私はこれを試しましたが失敗しました,, –

0

あなたは、クライアント・サーバが必要になりますクライアントエンドポイントを作成します。ここでは、mavenの例を示しました。

は、あなたは自分のパスにタイラスのすべてのjarファイルを追加し、Mavenを使用していない場合は、次のコード

import java.net.URI; 

import javax.websocket.ClientEndpoint; 
import javax.websocket.ContainerProvider; 
import javax.websocket.OnMessage; 
import javax.websocket.Session; 
import javax.websocket.WebSocketContainer; 

@ClientEndpoint 
public class WSClient { 
    private static Object waitLock = new Object(); 

    @OnMessage 
    public void onMessage(String message) { 
     System.out.println("Received msg: " + message); 
    } 

    private static void wait4TerminateSignal() { 
     synchronized (waitLock) { 
      try { 
       waitLock.wait(); 
      } catch (InterruptedException e) { 
      } 
     } 
    } 
    public static void main(String[] args) { 
     WebSocketContainer container = null;// 
     Session session = null; 
     try { 
      String url = "ws://localhost:8080/abcd/ratesrv"; //< Here goes your URL 
      container = ContainerProvider.getWebSocketContainer(); 
      session = container.connectToServer(WSClient.class, URI.create(url)); 
      wait4TerminateSignal(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (session != null) { 
       try { 
        session.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

を書くのmaven

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-server</artifactId> 
    <version>1.2.1</version> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-client</artifactId> 
    <version>1.2.1</version> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-container-grizzly</artifactId> 
    <version>1.2.1</version> 
</dependency> 

に次の依存関係を追加します。

+0

私はこれを使用しましたが、有効な接続を作成できません –

+0

あなたはjavascriptとの接続を作成できますか?どのIDEを使用していますか? – afzalex

+0

eclipse。はい、jsを使って作成しました。 –

関連する問題