jetty WebSocket自定义事件

时间:2012-08-03 14:29:20

标签: java servlets websocket jetty maven-jetty-plugin

在使用node.js和socket.io创建WebSocket服务器之前,我是带有jetty的WebSockets的新手。但是由于不同的要求,我将不得不使用java WebSocketServlet / WebSocket,并且到目前为止使用maven,jetty和jetty-websocket插件做得很好。我的问题是,我没有发现任何类似于socket解决方案的socket.io(socket,fn)实现的东西。我希望有同样的可能性来对客户端发出的不同事件做出反应,比如“new”,“addthis”,“jointhat”,...发送一些数据作为json或POST身体中的param。是否有任何可能或WebSocket实现可以像socket.io一样? 做这个“频道”的东西,我可以在服务器端实现事件处理?

2 个答案:

答案 0 :(得分:2)

WebSocket规范中没有自定义事件,socket.io只遵循自己的协议支持自定义事件 - https://github.com/LearnBoost/socket.io-spec

据我所知,没有支持自定义事件监听的Java实现。

但是,使用Atmosphere,您可以将socket.io客户端与Java Web服务器一起使用,但我还没有测试过。 https://github.com/Atmosphere/atmosphere/wiki/Getting-Started-with-Socket.IO

如果您想直接控制Jetty的WebSocketServlet,您可能希望在客户端使用其他库,如jQuery Socket。 - https://github.com/flowersinthesand/jquery-socket/tree/master/samples/jetty-ws

答案 1 :(得分:1)

Jetty的websocket实现仅涉及处理websocket的基础知识。

  • 二进制消息(带分段)
  • 短信(带分段)
  • Ping / Pong
  • 关闭

对支持各种新的websocket子协议(奇数名称)进行了一些简短的讨论,例如WAMP(websocket应用程序消息传递协议)。但那些只是建立在基本的websocket层之上。

另一种选择是使用具有完整频道api的内容,例如CometD,并将其配置为使用websocket而不是回退到较旧的通信格式。