Ниже приведены зависимости, которые я добавил в 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)
Транспорты доступны как 1.WebSocket, 2. Long-Polling, 3. callback-polling
Метод Find для AbstractHttpTransport возвращает ноль, и из-за этого возникает ошибка Неизвестный транспорт Байе.
Код: Выделить всё
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;
}
- веб-сокет,
- Длинный опрос
3 обратный вызов.
bayeuxServer.getTransport("long-polling") возвращает JSONHttpTransport@116efe65[long-polling]
bayeuxServer.getTransport("callback-polling") возвращает JSONPHttpTransport @2d97344c[callback-polling]".
Для транспорта Websocket он не попадает в блок ниже, если блокируется
Код: Выделить всё
if (serverTransport instanceof AbstractHttpTransport transport) {
if (transport.accept(request)) {
return transport;`enter code here`
}
}
Поэтому он не может войти в блок if, поэтому метод принятия будет не выполняться.
Для длинного опроса он попадает в первый блок if, поскольку JSONHttpTransport является экземпляром AbstractHttpTransport, но метод принятия возвращает false. Поскольку в нашем случае методом запроса является GET, а если метод запроса не POST, то метод принятия возвращает false.
то же самое и в случае с JSONPHttpTransport. Можете ли вы предложить мне решение для эта проблема
Но как заставить этот метод Find возвращать правильный BayeuxTransport. пожалуйста, предложите, нужно ли внести какие-либо изменения в pom.xml
Подробнее здесь: https://stackoverflow.com/questions/786 ... tty-12-0-8