Java backend for Socket.IO
library (http://socket.io/)
Supports Socket.IO
clients version 1.0+
Requires JSR 356-compatible server (tested with Jetty 9 and Tomcat 8)
Right now only websocket and XHR polling transports are implemented.
Based on https://github.com/tadglines/Socket.IO-Java
License: MIT
Default websocket endpoint configuration assumes it's located in the root context and accessible via /socket.io/
path.
When Socket.IO
backend is integrated into webapp managed by Jetty there is no need to perform additional configuration because Jetty scans for @ServerEndpoint
annotation and initializes websocket endpoint automatically.
When Jetty server is embedded into your application, websocket endpoint is located in the root context ("/") and expected to be accessible via /socket.io/
path (default configuration), then in order to initialize endpoint you should add the following code
WebSocketServerContainerInitializer.
configureContext(context).
addEndpoint(WebsocketTransportConnection.class);
When Jetty server is embedded into your application, but websocket endpoint is either located not in the root context ("/") or expected to be accessible via path other than /socket.io/
, then in order to initialize endpoint you should add the following code
ServerContainer serverContainer = WebSocketServerContainerInitializer.
configureContext(context);
serverContainer.
addEndpoint(new AnnotatedServerEndpointConfig(serverContainer,
WebsocketTransportConnection.class,
WebsocketTransportConnection.class.getAnnotation(ServerEndpoint.class),
null) {
@Override
public String getPath() {
return "/"; // context-relative path, "/bar" for context "/foo" and path "/foo/bar"
}
});
See example in com.codeminders.socketio.sample.jetty.ChatServer