Ниже приведены зависимости, которые я добавил в 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()- веб-сокет,
- длинный опрос
3 обратный вызов .
Код: Выделить всё
bayeuxServer.getTransport("websocket")Код: Выделить всё
bayeuxServer.getTransport("long-polling")Код: Выделить всё
bayeuxServer.getTransport("callback-polling")Для транспорта Websocket он не попадает в блок if ниже
Код: Выделить всё
if (serverTransport instanceof AbstractHttpTransport transport) {
if (transport.accept(request)) {
return transport;
}
}
Поэтому нет никакого способа он может войти в блок if, поэтому метод Accept не будет выполнен.
При длинном опросе он попадает в первый if блокируется, поскольку JSONHttpTransport является экземпляром AbstractHttpTransport, но метод Accept возвращает false, поскольку в нашем случае метод запроса — GET, а если метод запроса не POST, то метод Accept > метод возвращает false.
То же самое и с JSONPHttpTransport. Можете ли вы предложить мне решение этой проблемы?
Но как заставить этот метод find возвращать правильный BayeuxTransport? Пожалуйста, предложите внести какие-либо изменения в pom.xml
Подробнее здесь: https://stackoverflow.com/questions/786 ... tty-12-0-8
Мобильная версия