This is the Engine.IO Client Library for Java, which is simply ported from the JavaScript client.
See also: Socket.IO-client.java
The latest artifact is available on Maven Central. To install manually, please refer dependencies to pom.xml.
Add the following dependency to your pom.xml.
<dependencies> <dependency> <groupId>com.github.nkzawa</groupId> <artifactId>engine.io-client</artifactId> <version>0.5.1</version> </dependency> </dependencies>Add it as a gradle dependency for Android Studio, in build.gradle:
compile 'com.github.nkzawa:engine.io-client:0.5.1'Engine.IO-client.java has the similar api with the JS client. You can use Socket to connect:
socket = newSocket("ws://localhost"); socket.on(Socket.EVENT_OPEN, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){socket.send("hi"); socket.close()} }); socket.open();You can listen events as follows:
socket.on(Socket.EVENT_MESSAGE, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){Stringdata = (String)args[0]} }).on(Socket.EVENT_ERROR, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){Exceptionerr = (Exception)args[0]} });How to set options:
opts = newSocket.Options(); opts.transports = newString[]{WebSocket.NAME}; socket = newSocket(opts);Sending and receiving binary data:
socket = newSocket(); socket.on(Socket.EVENT_OPEN, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){// send binary databyte[] data = newbyte[42]; socket.send(data)} }).on(Socket.EVENT_MESSAGE, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){// receive binary databyte[] data = (byte[])args[0]} });Use custom SSL settings:
// default SSLContext for all socketsSocket.setDefaultSSLContext(mySSLContext); // set as an optionopts = newSocket.Options(); opts.sslContext = mySSLContext; socket = newSocket(opts);This library supports all of the features the JS client does, including events, options and upgrading transport. Android is fully supported.
Some features are added for simulating browser behavior like handling cookies.
socket.on(Socket.EVENT_TRANSPORT, newEmitter.listener(){@Overridepublicvoidcall(Object... args){// Called on a new transport created.Transporttransport = (Transport)args[0]; transport.on(Transport.EVENT_REQUEST_HEADERS, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){@SuppressWarnings("unchecked") Map<String, String> headers = (Map<String, String>)args[0]; // send cookies to server.headers.put("Cookie", "foo=1;")} }).on(Transport.EVENT_RESPONSE_HEADERS, newEmitter.Listener(){@Overridepublicvoidcall(Object... args){@SuppressWarnings("unchecked") Map<String, String> headers = (Map<String, String>)args[0]; // get cookies from server.Stringcookie = headers.get("Set-Cookie")} })} });See the Javadoc for more details.
http://nkzawa.github.io/engine.io-client.java/apidocs/
MIT
