websocket - How can I let spring+cometd support webscoket? -


i use chrome, return:

websocket connection 'ws://192.168.1.228:9090/achat/cometd' failed: unexpected response code: 400 

after error, use long-polling transport, , success connect server.

how can let websocket work? caused using springframework 3.1? thanks.

web.xml

<!-- filter support cross domain requests --> <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> <!-- cometd servlet --> <servlet>     <servlet-name>cometd</servlet-name>     <servlet-class>org.cometd.annotation.annotationcometdservlet</servlet-class>     <!--async-supported>true</async-supported-->     <init-param>         <param-name>timeout</param-name>         <param-value>20000</param-value>     </init-param>     <init-param>         <param-name>interval</param-name>         <param-value>0</param-value>     </init-param>     <init-param>         <param-name>maxinterval</param-name>         <param-value>10000</param-value>     </init-param>     <init-param>         <param-name>maxlazytimeout</param-name>         <param-value>5000</param-value>     </init-param>     <init-param>         <param-name>long-polling.multisessioninterval</param-name>         <param-value>2000</param-value>     </init-param>     <init-param>         <param-name>loglevel</param-name>         <param-value>100</param-value>     </init-param>     <init-param>         <param-name>transports</param-name>         <param-value>org.cometd.websocket.server.websockettransport</param-value>     </init-param>     <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping>     <servlet-name>cometd</servlet-name>     <url-pattern>/cometd/*</url-pattern> </servlet-mapping> 

servlet

@named @singleton @service public class chatservice {     @inject     private bayeuxserver bayeux;     @session     private serversession serversession;      @listener("/chat")     public void processhello(serversession remote, servermessage.mutable message)     {         map<string, object> input = message.getdataasmap();         string room = input.get("room").tostring();         string content = input.get("content").tostring();          map<string, object> output = input;                 bayeux.getchannel("/room/" + room).publish(remote, output, null);     } } 

follow cometd reference manual, section explains how integrate cometd spring.

there can find example uses spring's xml configuration setup websocket, , example of how configure spring via annotations.

your question lacks spring configuration file , part of web.xml file difficult in more detailed way.

just remember if configure cometd in spring, must remove cometd configuration web.xml. must have 1 place configure things: either web.xml or spring's xml/annotations.


Comments