В следующем примере показано, как создать конечную точку путём расширения класса Endpoint
:
public class EchoEndpoint extends Endpoint {
@Override
public void onOpen(final Session session, EndpointConfig config) {
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String msg) {
try {
session.getBasicRemote().sendText(msg);
} catch (IOException e) { ... }
}
});
}
}
Эта конечная точка повторяет каждое полученное сообщение. Класс Endpoint
определяет три метода жизненного цикла: onOpen
, onClose
и onError
. Класс EchoEndpoint
реализует метод onOpen
, который является единственным абстрактным методом в классе Endpoint
.
Параметр Session
представляет диалог между этой конечной точкой и удалённой конечной точкой. Метод addMessageHandler
регистрирует обработчики сообщений, а метод getBasicRemote
возвращает объект, представляющий удалённую конечную точку. Интерфейс Session
подробно рассматривается в оставшейся части этой главы.
Обработчик сообщений реализован как анонимный внутренний класс. Метод onMessage
обработчика сообщений вызывается, когда конечная точка получает текстовое сообщение.
Чтобы развернуть эту программную конечную точку, используйте следующий код в приложении Java EE:
ServerEndpointConfig.Builder.create(EchoEndpoint.class, "/echo").build();
При развёртывании приложения конечная точка доступна по ссылке ws://<хост>:<порт>/<приложение>/echo
. Например, ws://localhost:8080/echoapp/echo
.