2016-05-06 2 views
0

Я новичок в java. и я выполняю тестирование производительности на сервере websockt. Мне нужно сделать websocket через java для связи с сервером. Я использовал javax.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.

Добавить следующие зависимости в мавена

<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> 

Затем написать следующий код

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, просто добавьте все файлы фляги Тире на вашем пути.

+0

Я использовал это, но не могу создать допустимый connetion –

+0

вы можете создать соединение с javascript? Какую IDE вы используете? – afzalex

+0

eclipse. Да, сделал это с помощью js .. –