2

在使用 node.js 和 socket.io 创建 WebSocket 服务器之前,我是使用码头的 WebSockets 新手。但由于不同的要求,我将不得不使用 java WebSocketServlet/WebSocket 并且到目前为止使用 maven、jetty 和 jetty-websocket 插件做得很好。我的问题是,我没有找到任何与 java 解决方案的 socket.io 的 socket.on(event, fn) 实现相媲美的东西。我希望有同样的可能性对从客户端触发的不同事件做出反应,例如“new”、“addthis”、“jointhat”,......将一些数据作为 json 或作为正文中的 POST 参数发送。是否有任何可能或 WebSocket 实现可以与 socket.io 做同样的事情?做这个“通道”的东西,我可以在服务器端实现事件处理?

4

2 回答 2

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

于 2012-08-05T06:08:06.417 回答
1

Jetty 的 websocket 实现只关心处理 websocket 的基础。

  • 二进制消息(带分片)
  • 短信(带分片)
  • 乒乓

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

另一种选择是使用像CometD这样的全通道 API ,并将其配置为使用 websocket,而不是回退到旧的通信格式。

于 2012-08-10T22:06:54.903 回答