Вы можете настроить websockets с помощью Spring Framework 3.x
. Я разработал небольшое приложение для доказательства концепции, чтобы продемонстрировать, как на основе SpringConfiguration Rossen Stoyanchev, выпущенного с весенним ядром 4.0.
Приложение устанавливает конечную точку сервера websocket с uri /wstest
, которая будет использовать пружинный компонент @Autowired
для выбора приветственного слова и ответа на сообщение в веб-макете.
Соединение с веб-разъемом инициировано и сообщения, отправленные с помощью html-страницы (index.html
), запущенной в браузере, поддерживающем веб-сайты.
Регистрация конечной точки выполняется ServletContextListener при инициализации контекста, и когда создается конечная точка, она будет подключаться к весне:
@WebListener
public class MyApplication implements ServletContextListener {
private final static String SERVER_CONTAINER_ATTRIBUTE = "javax.websocket.server.ServerContainer";
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext container = sce.getServletContext();
final ServerContainer serverContainer = (ServerContainer) container.getAttribute(SERVER_CONTAINER_ATTRIBUTE);
try {
serverContainer.addEndpoint(new MyEndpointConfig(MyEndpoint.class, "/wstest"));
} catch (DeploymentException e) {
e.printStackTrace();
}
}
}
И конечная точка:
@Component
public class MyEndpoint extends Endpoint {
@Autowired
MyService myService;
@Override
public void onOpen(Session session, EndpointConfig config) {
session.addMessageHandler(new MyMessageHandler(session));
}
class MyMessageHandler implements MessageHandler.Whole {
final Session session;
public MyMessageHandler(Session session) {
this.session = session;
}
@Override
public void onMessage(String message) {
try {
String greeting = myService.getGreeting();
session.getBasicRemote().sendText(greeting + ", got your message (" + message + "). Thanks ! (session: " + session.getId() + ")");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Осмотрите пример полного источника и готов к запуску на моей странице Github .