Getting Started¶
Create a servlet for handling incoming HTTP connections and call
EngineIoServer class’s handleRequest method on receiving an HTTP
request. Create a new instance of SocketIoServer using the EngineIoServer
instance.
Example servlet¶
Example servlet class:
@WebServlet("/socket.io/*")
public class SocketIoServlet extends HttpServlet {
private final EngineIoServer mEngineIoServer = new EngineIoServer();
private final SocketIoServer mSocketIoServer = new SocketIoServer(mEngineIoServer);
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
mEngineIoServer.handleRequest(request, response);
}
}
In the example servlet above, a static instance of EngineIoServer is defined and
the method service is overridden to call handleRequest.
Accept WebSocket Connection¶
Please refer to Engine.IO documentation for accepting WebSocket connection.
Create namesapce¶
Call the namespace method on SocketIoServer to create or retrieve a namespace.
Example:
SocketIoNamespace namespace = server.namespace("/");
// Do something with namespace
Listening for connections¶
Attach a listener to the connection event of SocketIoNamespace to listen for
new connections.
Example:
namespace.on("connection", new Emitter.Listener() {
@Override
public void call(Object... args) {
SocketIoSocket socket = (SocketIoSocket) args[0];
// Do something with socket
}
});
Listening for message from client¶
Attach an event listener on SocketIoSocket to listen for events from client.
Example:
// Attaching to 'foo' event
socket.on("foo", new Emitter.Listener() {
@Override
public void call(Object... args) {
// Arugments from client available in 'args'
}
});
Sending message to client¶
Call the send method on SocketIoSocket to send event to remote client.
Example:
// Sending event 'foo' with args 'bar arg', 1
socket.send("foo", "bar arg", 1);
Broadcasting message to room¶
Call the broadcast method on SocketIoNamespace to broadcast event to
all remote clients.
Example:
// Broadcasting event 'foo' with args 'bar arg' to room 'room'
namespace.broadcast("room", "foo", "bar arg");