Ниже приведены зависимости, которые я добавил в pom.xml.
Код: Выделить всё
org.cometd.java
cometd-java-client-common
8.0.2
org.cometd.java
cometd-java-client-websocket-jetty
8.0.2
org.cometd.java
cometd-java-client-http-common
8.0.2
org.cometd.java
cometd-java-client-http-jetty
8.0.2
org.cometd.java
cometd-java-server-common
8.0.2
org.cometd.java
cometd-java-server-http-jakarta
8.0.2
org.cometd.java
cometd-java-server-http-jetty
8.0.2
org.cometd.java
cometd-java-annotation-server
8.0.2
org.cometd.java
cometd-java-annotation-server-jakarta
8.0.2
org.cometd.java
cometd-java-server-websocket-jakarta
8.0.2
org.cometd.java
cometd-java-common
8.0.2
Приложение успешно создано, но когда я запускаю приложение, оно завершается с ошибкой 400 и кодом ошибки. СООБЩЕНИЕ: Неизвестный транспорт Байе. Допускаю ли я какую-либо ошибку в зависимостях, которая приводит к ошибке?
Я пробовал отлаживать приложение.
Элемент управления переходит к поиску метода AbstactHttpTransport, который является частью Comet-java-server-common-8.0.2.jar.
Транспорт поставляется как
- WebSocket
- Длинный опрос
- опрос обратного вызова
Код: Выделить всё
public static AbstractHttpTransport find(BayeuxServer bayeuxServer, CometDRequest request) {
Iterator var2 = bayeuxServer.getAllowedTransports().iterator();
while(var2.hasNext()) {
String transportName = (String)var2.next();
ServerTransport serverTransport = bayeuxServer.getTransport(transportName);
if (serverTransport instanceof AbstractHttpTransport transport)
{
if (transport.accept(request)) {
return transport;
}
}
}
return null;
}
Код: Выделить всё
bayeuxServer.getAllowedTransports()
- веб-сокет
- Длинный опрос
< li>callback-polling
bayeuxServer.getTransport("long-polling") возвращает JSONHttpTransport@116efe65[long-polling]
bayeuxServer.getTransport("callback-polling") возвращает JSONPHttpTransport@2d97344c[callback-polling]< /p>
Для транспорта Websocket он не попадает в блок ниже, если
Код: Выделить всё
if (serverTransport instanceof AbstractHttpTransport transport) {
if (transport.accept(request)) {
return transport;
}
}
Поэтому он не может войти в блок if, поэтому метод принятия будет не выполняться.
Для длинного опроса он попадает в первый блок if, поскольку JSONHttpTransport является экземпляром AbstractHttpTransport, но метод принятия возвращает false, поскольку метод запроса в нашем случае — GET и если метод запроса не POST, то метод принятия возвращает false.
То же самое относится и к JSONPHttpTransport. Можете ли вы предложить мне решение этой проблемы?
Но как заставить этот метод поиска возвращать правильный BayeuxTransport? Какие-нибудь изменения нужно внести в pom.xml?
Подробнее здесь: https://stackoverflow.com/questions/786 ... metd-8-0-2