2014-01-03 10 views
0

Я пишу приложение, использующее cometd с Байе сервера для отправки/получения сообщения между сервером и клиентомУстановите WebSocket в cometd безуспешным

Но когда cometd создать WebSocket на сервер, сервер всегда возвращать код 400:

«WebSocket подключение к 'WS: // локальный: 8080/APServer/cometd' не удалось: Неожиданный код ответа: 400"

Мой клиент настроить cometd:

cometd.configure({ 
    url: cometURL, 
    logLevel: 'debug', 
    appendMessageTypeToURL: false 
}); 
cometd.addListener('/meta/handshake', _metaHandshake); 
cometd.addListener('/meta/connect', _metaConnect); 
cometd.websocketEnabled = true; 
cometd.handshake(); 

Мой сервер web.xml, как показано ниже:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>3.main.html</welcome-file> 
    </welcome-file-list> 
    <servlet> 
     <servlet-name>cometd</servlet-name> 
     <servlet-class>org.cometd.server.CometdServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
     <!--init-param> 
      <param-name>transports</param-name> 
      <param-value>org.cometd.websocket.server.WebSocketTransport</param-value> 
     </init-param--> 
     <async-supported>true</async-supported> 
     <init-param> 
      <param-name>logLevel</param-name> 
      <param-value>3</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>cometd</servlet-name> 
     <url-pattern>/cometd/*</url-pattern> 
    </servlet-mapping> 
    <servlet> 
     <servlet-name>configuration</servlet-name> 
     <servlet-class>jp.co.ntt.lab.multiline.web.init.ConfigurationServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <filter> 
     <filter-name>cross-origin</filter-name> 
     <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> 
     <async-supported>true</async-supported> 
    </filter> 
    <filter-mapping> 
     <filter-name>cross-origin</filter-name> 
     <url-pattern>/cometd/*</url-pattern> 
    </filter-mapping> 
</web-app> 

Я пытаюсь найти решение для 2days, но нет удач.

Надежда, что любое тело может решить эти проблемы

Большое спасибо

+0

какой контейнер сервлетов вы используете и какую версию? Поддержка WebSocket для CometD работает только в Jetty 7 или выше. – sbordet

+0

дорогой sbordet, на самом деле i user jetty 7.x.x – KhanhQuach

ответ

0

От Вашего web.xml вы закомментировал раздел, который определяет дополнительные транспорты и что на самом деле определяет WebSocket транспорт.

Поэтому ваш сервер не поддерживает WebSocket (потому что вы его прокомментировали), и это объясняет, почему ваш клиент получает сообщение об ошибке.

Если вы раскомментируете, что раздел WebSocket должен работать.