我正在做整合websocket和camel并选择现有的氛围 - websocket组件。
我的步骤:
1)添加到web.xml
<!-- Camel servlet -->
<servlet>
<servlet-name>CamelWsServlet</servlet-name>
<servlet-class>org.apache.camel.component.atmosphere.websocket.CamelWebSocketServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Camel servlet mapping -->
<servlet-mapping>
<servlet-name>CamelWsServlet</servlet-name>
<url-pattern>/camel/*</url-pattern>
</servlet-mapping>
2)添加到spring applicationContext.xml
<bean id="websocketProcessor" class="mypackage.WebsocketProcessor" />
<camelContext id="main" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="atmosphere-websocket:///chat"/>
<process ref="websocketProcessor"/>
</route>
</camelContext>
3)使用chrome-extension连接到websocket url:ws:// localhost:8080 / MyApp / camel / chat
结果:
工作正常我可以连接和发送消息 但出于某种原因,我看到Apache Camel 2.16.0(CamelContext:main)正在启动两次。
但是要点我需要拥有自己的websocket会话密钥和用户对象的地图,所以我需要访问org.apache.camel.component.atmosphere.websocket.WebsocketHandler中的onOpen / onClose / onError方法。 / p>
有任何建议我该怎么做?也许应该扩展该组件以支持此功能?
谢谢,