2014-02-17 2 views
9

Я хочу создать конечную точку websocket клиента в Java (как можно чище, без фреймворков), но практически все найденные мной примеры имеют только конечные точки сервера в Java, тогда как клиент находится в Javascript. Может ли кто-нибудь указать мне хороший пример клиента или предоставить его?Создать отдельную конечную точку клиента Java websocket?

+0

Почему вы заботитесь о веб-сайтах, если ваш клиент является Java? Вы взаимодействуете с существующим сервером, который предоставляет только API-интерфейс websocket? А почему нет библиотек? –

+1

Это правильно, я хочу подключиться к серверу websocket. Библиотеки в порядке, я просто предпочитаю сосредоточиться на основных библиотеках, желательно только от Oracle, и не добавлять кучу банок от какого-то стороннего стороннего или случайного разработчика github, который не был защищен крупной компанией. –

+0

Пользователь Tyrus - автономный клиент веб-сокета Java. - https://tyrus.java.net/ –

ответ

8

@ClientEndpoint annottation является частью спецификации, поэтому я 'd предложить использовать это, здесь good tutoria l, см. шаги 4 и 6.

Шаг 6 из OpenShift учебника

@ClientEndpoint 
public class WordgameClientEndpoint { 

private static CountDownLatch latch; 

private Logger logger = Logger.getLogger(this.getClass().getName()); 

@OnOpen 
public void onOpen(Session session) { 
    // same as above 
} 

@OnMessage 
public String onMessage(String message, Session session) { 
    // same as above 
} 

@OnClose 
public void onClose(Session session, CloseReason closeReason) { 
    logger.info(String.format("Session %s close because of %s", session.getId(), closeReason)); 
    latch.countDown(); 
} 

public static void main(String[] args) { 
    latch = new CountDownLatch(1); 

    ClientManager client = ClientManager.createClient(); 
    try { 
     client.connectToServer(WordgameClientEndpoint.class, new URI("ws://localhost:8025/websockets/game")); 
     latch.await(); 

    } catch (DeploymentException | URISyntaxException | InterruptedException e) { 
     throw new RuntimeException(e); 
    } 
} 

}

в этом примере они используют tyrus, который является примером реализации для WebSockets в Java, так что я думаю, что отвечает вашим требованиям хорошо поддержанная реализация websocket.

Смежные вопросы