From 40fe2fb891f63b53ef892a2efcfb57e2e28438ed Mon Sep 17 00:00:00 2001 From: FrancoisReg Date: Thu, 26 Jun 2014 12:00:13 +0800 Subject: [PATCH 1/7] [ENH]Support for socket.io 1.0.x --- src/io/socket/IOConnection.java | 360 +++++++++++++++++++++----- src/io/socket/IOMessage.java | 266 +++++++++++++++++-- src/io/socket/SocketIO.java | 16 +- src/io/socket/WebsocketTransport.java | 24 +- 4 files changed, 584 insertions(+), 82 deletions(-) diff --git a/src/io/socket/IOConnection.java b/src/io/socket/IOConnection.java index 0febf78..fee01fb 100644 --- a/src/io/socket/IOConnection.java +++ b/src/io/socket/IOConnection.java @@ -8,11 +8,14 @@ */ package io.socket; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; @@ -25,6 +28,9 @@ import java.util.TimerTask; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; @@ -74,6 +80,10 @@ class IOConnection implements IOCallback { /** The url for this connection. */ private URL url; + + public enum VersionSocketIO { V09x , V10x }; + /** The version of socket.io server. */ + private VersionSocketIO version; /** The transport for this connection. */ private IOTransport transport; @@ -170,9 +180,50 @@ private class ReconnectTask extends TimerTask { @Override public void run() { connectTransport(); - if (!keepAliveInQueue) { - sendPlain("2::"); - keepAliveInQueue = true; + if (!keepAliveInQueue) + { + switch (IOConnection.this.version) + { + case V09x: + sendPlain("2::"); + + break; + case V10x: + sendPlain("2"); + break; + } + keepAliveInQueue = true; + } + } + } + + /** The reconnect task. Null if no reconnection is in progress. */ + private HeartBeatTask heartBeatTask = null; + + /** + * The Class ReconnectTask. Handles reconnect attempts + */ + private class HeartBeatTask extends TimerTask { + + /* + * (non-Javadoc) + * + * @see java.util.TimerTask#run() + */ + @Override + public void run() + { + if (IOConnection.this.getState() == STATE_READY) + { + switch (IOConnection.this.version) + { + case V09x: + sendPlain("2::"); + break; + case V10x: + sendPlain("2"); + break; + } } } } @@ -256,14 +307,15 @@ static public IOConnection register(String origin, SocketIO socket) { * @return true, if successfully registered on this transport, otherwise * false. */ - public synchronized boolean register(SocketIO socket) { + public synchronized boolean register(SocketIO socket) + { String namespace = socket.getNamespace(); if (sockets.containsKey(namespace)) return false; sockets.put(namespace, socket); socket.setHeaders(headers); IOMessage connect = new IOMessage(IOMessage.TYPE_CONNECT, - socket.getNamespace(), ""); + socket.getNamespace(), "",this.version); sendPlain(connect.toString()); return true; } @@ -275,8 +327,17 @@ public synchronized boolean register(SocketIO socket) { * @param socket * the socket to be shut down */ - public synchronized void unregister(SocketIO socket) { - sendPlain("0::" + socket.getNamespace()); + public synchronized void unregister(SocketIO socket) + { + switch (this.version) + { + case V09x: + sendPlain("0::" + socket.getNamespace()); + break; + case V10x: + sendPlain("0"+ socket.getNamespace()); + break; + } sockets.remove(socket.getNamespace()); socket.getCallback().onDisconnect(); @@ -291,11 +352,13 @@ public synchronized void unregister(SocketIO socket) { */ private void handshake() { URL url; - String response; + String response = ""; URLConnection connection; - try { + try + { setState(STATE_HANDSHAKE); - url = new URL(IOConnection.this.url.toString() + SOCKET_IO_1); + url = new URL(IOConnection.this.url.toString() + SOCKET_IO_1 + "?EIO=2&transport=polling"); + logger.info("URL: "+url.toString()); connection = url.openConnection(); if (connection instanceof HttpsURLConnection) { ((HttpsURLConnection) connection) @@ -305,19 +368,69 @@ private void handshake() { connection.setReadTimeout(connectTimeout); /* Setting the request headers */ - for (Entry entry : headers.entrySet()) { - connection.setRequestProperty((String) entry.getKey(), - (String) entry.getValue()); + for (Entry entry : headers.entrySet()) + { + connection.setRequestProperty((String) entry.getKey(),(String) entry.getValue()); } - - InputStream stream = connection.getInputStream(); - Scanner in = new Scanner(stream); - response = in.nextLine(); - String[] data = response.split(":"); - sessionId = data[0]; - heartbeatTimeout = Long.parseLong(data[1]) * 1000; - closingTimeout = Long.parseLong(data[2]) * 1000; - protocols = Arrays.asList(data[3].split(",")); + + + BufferedReader inB = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String inputLine; + while ((inputLine = inB.readLine()) != null) + { + response += inputLine; + } + inB.close(); + +// InputStream stream = connection.getInputStream(); +// Scanner in = new Scanner(stream); +// while (in.hasNext()) +// { +// response += in.next(); +// } +// in.close(); + + Pattern pattern = Pattern.compile("\\w+:\\w+:\\w+:\\w+"); + Matcher matcher = pattern.matcher(response); + if (matcher.find()) + { + logger.info("Response: "+response); + this.version = VersionSocketIO.V09x; + logger.info("Version: V09x"); + String[] data = response.split(":"); + sessionId = data[0]; + heartbeatTimeout = Long.parseLong(data[1]) * 1000; + closingTimeout = Long.parseLong(data[2]) * 1000; + protocols = Arrays.asList(data[3].split(",")); + } else + { + response = response.substring(response.indexOf('{')); + response = response.substring(0,response.lastIndexOf('}')+1); + logger.info("Response: "+response); + this.version = VersionSocketIO.V10x; + logger.info("Version: V10x"); + try + { + JSONObject data = null; + data = new JSONObject(response); + sessionId = data.getString("sid"); + heartbeatTimeout = data.getLong("pingInterval"); + closingTimeout = data.getLong("pingTimeout"); + +// JSONArray arr = data.getJSONArray("upgrades"); +// for (int i = 0; i < arr.length(); i++) { +// protocols.add(arr.getString(i)); +// } + protocols = new ArrayList(); + protocols.add("websocket"); //FIXME + + }catch (JSONException e) + { + logger.warning("Malformated JSON received"); + } + } + + } catch (Exception e) { error(new SocketIOException("Error while handshaking", e)); } @@ -326,12 +439,13 @@ private void handshake() { /** * Connect transport. */ - private synchronized void connectTransport() { + private synchronized void connectTransport() + { if (getState() == STATE_INVALID) return; setState(STATE_CONNECTING); if (protocols.contains(WebsocketTransport.TRANSPORT_NAME)) - transport = WebsocketTransport.create(url, this); + transport = WebsocketTransport.create(url, this,this.version); else if (protocols.contains(XhrTransport.TRANSPORT_NAME)) transport = XhrTransport.create(url, this); else { @@ -373,7 +487,7 @@ public void ack(Object... args) { } } IOMessage ackMsg = new IOMessage(IOMessage.TYPE_ACK, endPoint, - id + array.toString()); + id + array.toString(),IOConnection.this.version); sendPlain(ackMsg.toString()); } }; @@ -454,10 +568,11 @@ private void error(SocketIOException e) { * @param text * the Text to be send. */ - private synchronized void sendPlain(String text) { + private synchronized void sendPlain(String text) + { if (getState() == STATE_READY) try { - logger.info("> " + text); + logger.info("SEND " + text); transport.send(text); } catch (Exception e) { logger.info("IOEx: saving"); @@ -484,10 +599,12 @@ private synchronized void resetTimeout() { if (heartbeatTimeoutTask != null) { heartbeatTimeoutTask.cancel(); } - if (getState() != STATE_INVALID) { + + if (getState() != STATE_INVALID) + { heartbeatTimeoutTask = new HearbeatTimeoutTask(); backgroundTimer.schedule(heartbeatTimeoutTask, closingTimeout - + heartbeatTimeout); + + heartbeatTimeout); } } @@ -516,12 +633,18 @@ private IOCallback findCallback(IOMessage message) throws SocketIOException { * * {@link IOTransport} calls this when a connection is established. */ - public synchronized void transportConnected() { + public synchronized void transportConnected() + { setState(STATE_READY); if (reconnectTask != null) { reconnectTask.cancel(); reconnectTask = null; } + if (heartBeatTask!= null) { + heartBeatTask.cancel(); + } + heartBeatTask = new HeartBeatTask(); // heartbeat loop + backgroundTimer.schedule(heartBeatTask,heartbeatTimeout,heartbeatTimeout); resetTimeout(); if (transport.canSendBulk()) { ConcurrentLinkedQueue outputBuffer = this.outputBuffer; @@ -609,11 +732,12 @@ public void transportData(String text) { * @param text * the text */ - public void transportMessage(String text) { - logger.info("< " + text); + public void transportMessage(String text) + { + logger.info("Received: " + text); IOMessage message; try { - message = new IOMessage(text); + message = new IOMessage(text,this.version); } catch (Exception e) { error(new SocketIOException("Garbage from server: " + text, e)); return; @@ -630,13 +754,14 @@ public void transportMessage(String text) { break; case IOMessage.TYPE_CONNECT: try { - if (firstSocket != null && "".equals(message.getEndpoint())) { + if (firstSocket != null && "".equals(message.getEndpoint())) + { if (firstSocket.getNamespace().equals("")) { firstSocket.getCallback().onConnect(); } else { IOMessage connect = new IOMessage( IOMessage.TYPE_CONNECT, - firstSocket.getNamespace(), ""); + firstSocket.getNamespace(), "",this.version); sendPlain(connect.toString()); } } else { @@ -649,10 +774,33 @@ public void transportMessage(String text) { } break; case IOMessage.TYPE_HEARTBEAT: - sendPlain("2::"); - break; + { + switch (this.version) + { + case V09x: + sendPlain("2::"); + break; + case V10x: + sendPlain("3"+message.getData()); + break; + } + }break; + case IOMessage.TYPE_PONG: + { + switch (this.version) + { + case V09x: + //Doesn't exist + break; + case V10x: + if("probe".equals(message.getData())) + sendPlain("5"+message.getData()); + break; + } + }break; case IOMessage.TYPE_MESSAGE: - try { + try + { findCallback(message).onMessage(message.getData(), remoteAcknowledge(message)); } catch (Exception e) { @@ -662,14 +810,15 @@ public void transportMessage(String text) { } break; case IOMessage.TYPE_JSON_MESSAGE: - try { + try + { JSONObject obj = null; String data = message.getData(); + logger.info("JSON to Parse: "+data); if (data.trim().equals("null") == false) obj = new JSONObject(data); try { - findCallback(message).onMessage(obj, - remoteAcknowledge(message)); + findCallback(message).onMessage(obj,remoteAcknowledge(message)); } catch (Exception e) { error(new SocketIOException( "Exception was thrown in onMessage(JSONObject).\n" @@ -680,13 +829,17 @@ public void transportMessage(String text) { } break; case IOMessage.TYPE_EVENT: + { try { JSONObject event = new JSONObject(message.getData()); +// logger.info("Data to Parse: "+event.toString()); Object[] argsArray; - if (event.has("args")) { + if (event.has("args")) + { JSONArray args = event.getJSONArray("args"); argsArray = new Object[args.length()]; - for (int i = 0; i < args.length(); i++) { + for (int i = 0; i < args.length(); i++) + { if (args.isNull(i) == false) argsArray[i] = args.get(i); } @@ -703,8 +856,8 @@ public void transportMessage(String text) { } } catch (JSONException e) { logger.warning("Malformated JSON received"); - } - break; + } + } break; case IOMessage.TYPE_ACK: String[] data = message.getData().split("\\+", 2); @@ -727,8 +880,16 @@ public void transportMessage(String text) { } catch (JSONException e) { logger.warning("Received malformated Acknowledge data!"); } - } else if (data.length == 1) { - sendPlain("6:::" + data[0]); + } else if (data.length == 1) + { + switch (this.version) + { + case V09x: + sendPlain("6:::" + data[0]); + break; + case V10x: + break; + } } break; case IOMessage.TYPE_ERROR: @@ -746,7 +907,7 @@ public void transportMessage(String text) { case IOMessage.TYPE_NOOP: break; default: - logger.warning("Unkown type received" + message.getType()); + logger.warning("Unkown type received: " + message.getType()); break; } } @@ -756,7 +917,8 @@ public void transportMessage(String text) { * do not shut down TCP-connections when switching from HSDPA to Wifi */ public synchronized void reconnect() { - if (getState() != STATE_INVALID) { + if (getState() != STATE_INVALID) + { invalidateTransport(); setState(STATE_INTERRUPTED); if (reconnectTask != null) { @@ -775,6 +937,38 @@ public synchronized void reconnect() { public String getSessionId() { return sessionId; } + + /** + * Returns the version. This should be called from a {@link IOTransport} + * + * @return the version used (and null if not received yet) + */ + public IOConnection.VersionSocketIO getVersionSocket() { + return this.version; + } + /** + * Returns the version. This should be called from a {@link IOTransport} + * + * @return the version used (and null if not received yet) + */ + public boolean canSend() + { + long startTime = System.nanoTime(); + long elapsedTime = System.nanoTime() - startTime; + while(!isConnected() && elapsedTime < 1000000) + { + try + { + Thread.sleep(100); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + elapsedTime = System.nanoTime() - startTime; + } + if(!isConnected()) + return false; + return true; + } /** * sends a String message from {@link SocketIO} to the {@link IOTransport}. @@ -786,11 +980,32 @@ public String getSessionId() { * @param text * the text */ - public void send(SocketIO socket, IOAcknowledge ack, String text) { - IOMessage message = new IOMessage(IOMessage.TYPE_MESSAGE, - socket.getNamespace(), text); - synthesizeAck(message, ack); - sendPlain(message.toString()); + public void send(SocketIO socket, IOAcknowledge ack, String text) + { + if(!canSend()) + { + logger.warning("An error occured to send your message"); + return; + } + if(this.version == VersionSocketIO.V10x ) + { + try + { + text = text.replaceAll("\\\\\"", "\""); + JSONObject data = null; + data = new JSONObject(text); + this.send(socket, ack, data); + }catch (JSONException e) + { + logger.warning("Malformed JSON text (In V1.0.x only JSON can be sent)"); + } + } + else + { + IOMessage message = new IOMessage(IOMessage.TYPE_MESSAGE,socket.getNamespace(),text,this.version); + synthesizeAck(message, ack); + sendPlain(message.toString()); + } } /** @@ -803,9 +1018,29 @@ public void send(SocketIO socket, IOAcknowledge ack, String text) { * @param json * the json */ - public void send(SocketIO socket, IOAcknowledge ack, JSONObject json) { - IOMessage message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, - socket.getNamespace(), json.toString()); + public void send(SocketIO socket, IOAcknowledge ack, JSONObject json) + { + if(!canSend()) + { + logger.warning("An error occured to send your message"); + return; + } + IOMessage message; + switch (this.version) + { + case V09x: + message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, + socket.getNamespace(),json.toString(),this.version); + break; + case V10x: + message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, + socket.getNamespace(),json.toString().replaceAll("\"", "\\\\\""),this.version); + break; + default: + message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, + socket.getNamespace(),json.toString(),this.version); + break; + } synthesizeAck(message, ack); sendPlain(message.toString()); } @@ -823,19 +1058,24 @@ public void send(SocketIO socket, IOAcknowledge ack, JSONObject json) { * the arguments to be send */ public void emit(SocketIO socket, String event, IOAcknowledge ack, - Object... args) { + Object... args) + { + if(!canSend()) + { + logger.warning("An error occured to send your message"); + return; + } try { JSONObject json = new JSONObject().put("name", event).put("args", new JSONArray(Arrays.asList(args))); IOMessage message = new IOMessage(IOMessage.TYPE_EVENT, - socket.getNamespace(), json.toString()); + socket.getNamespace(), json.toString(),this.version); synthesizeAck(message, ack); sendPlain(message.toString()); } catch (JSONException e) { error(new SocketIOException( "Error while emitting an event. Make sure you only try to send arguments, which can be serialized into JSON.")); } - } /** diff --git a/src/io/socket/IOMessage.java b/src/io/socket/IOMessage.java index a911c50..1017173 100644 --- a/src/io/socket/IOMessage.java +++ b/src/io/socket/IOMessage.java @@ -8,19 +8,33 @@ */ package io.socket; +import java.util.Arrays; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import io.socket.IOConnection.VersionSocketIO; + /** * The Class IOMessage. */ class IOMessage { + /** Message type Unknown*/ + public static final int TYPE_UNKNOWN= -1; + /** Message type disconnect */ public static final int TYPE_DISCONNECT = 0; /** Message type connect */ public static final int TYPE_CONNECT = 1; - /** Message type heartbeat */ + /** Message type heartbeat/ping */ public static final int TYPE_HEARTBEAT = 2; + + /** Message type pong */ + public static final int TYPE_PONG = 9; /** Message type message */ public static final int TYPE_MESSAGE = 3; @@ -39,6 +53,15 @@ class IOMessage { /** Message type noop */ public static final int TYPE_NOOP = 8; + + /** Message type Binary Event */ + public static final int TYPE_BINARY_EVENT= 9; + + /** Message type Binary ACK*/ + public static final int TYPE_BINARY_ACK = 10; + + /** Message type Upgrade required */ + public static final int TYPE_UPGRADE = 11; /** Index of the type field in a message */ public static final int FIELD_TYPE = 0; @@ -61,6 +84,8 @@ class IOMessage { /** Type */ private int type; + private IOConnection.VersionSocketIO version; + /** * Instantiates a new IOMessage by given data. * @@ -73,7 +98,9 @@ class IOMessage { * @param data * the data */ - public IOMessage(int type, String id, String namespace, String data) { + public IOMessage(int type, String id, String namespace, String data,IOConnection.VersionSocketIO version) + { + this.version = version; this.type = type; this.fields[FIELD_ID] = id; this.fields[FIELD_TYPE] = "" + type; @@ -91,8 +118,9 @@ public IOMessage(int type, String id, String namespace, String data) { * @param data * the data */ - public IOMessage(int type, String namespace, String data) { - this(type, null, namespace, data); + public IOMessage(int type, String namespace, String data,IOConnection.VersionSocketIO version) + { + this(type, null, namespace, data,version); } /** @@ -101,27 +129,217 @@ public IOMessage(int type, String namespace, String data) { * * @param message * the message + * @param version + * The parsing for a socket io 0.9.x and 1.0.x are different */ - public IOMessage(String message) { - String[] fields = message.split(":", NUM_FIELDS); - for (int i = 0; i < fields.length; i++) { - this.fields[i] = fields[i]; - if(i == FIELD_TYPE) - this.type = Integer.parseInt(fields[i]); + public IOMessage(String message,IOConnection.VersionSocketIO version) + { + this.version = version; + switch (this.version) + { + case V09x: + String[] fields = message.split(":", NUM_FIELDS); + for (int i = 0; i < fields.length; i++) { + this.fields[i] = fields[i]; + if(i == FIELD_TYPE) + this.type = Integer.parseInt(fields[i]); + } + break; + case V10x: + { + //42["message","{\"type\":\"redirect\",\"url\":\"/logout\",\"rid\":\"test\",\"info\":\"Internal error: could not get csInfo.\",\"action\":\"reject\"}"] + int control = message.charAt(0) - '0'; + String data = message.substring(1); + String endpoint = ""; + + this.fields[FIELD_ID] = ""; + switch (control) + { + case 0: + this.type = TYPE_UNKNOWN; + break; + case 1: + this.type = TYPE_UNKNOWN; + break; + case 2: + this.type = TYPE_HEARTBEAT; + this.setData(data); + break; + case 3: + this.type = TYPE_PONG; + this.setData(data); + break; + case 4: + { + control = data.charAt(0) - '0'; + data = data.substring(1); + int iendpoint = data.indexOf('['); + if(iendpoint != -1) + endpoint = data.substring(0,iendpoint); + switch (control) + { + case 0: + this.type = TYPE_CONNECT; + break; + case 1: + this.type = TYPE_DISCONNECT; + break; + case 2: + { + //event + //5::: + //message + // ["message","{\"type\":\"message sendWith backslash\"}"] +// System.out.println("To Parse: "+data); +// int extraQuote = data.lastIndexOf("}\""); +// if(extraQuote != -1) +// { +// StringBuilder b = new StringBuilder(data); +// b.replace(extraQuote,extraQuote+2, "}" ); +// data = b.toString(); +// data = data.replace("\"{", "{"); +//// data = data.replaceAll("}\"", "}"); +// } + // + while(data.indexOf("}\",\"{") != -1) + data = data.replace("}\",\"{", "},{"); + data = data.replace(",\"{", ",{"); + data = data.replace("}\"]", "}]"); + // ["message",{\"type\":\"message sendWith backslash\"}] + data = data.replaceAll("\\\\\\\\\\\\\"", "\""); + data = data.replaceAll("\\\\\"", "\""); + // ["message",{"type":"message sendWith backslash"}] +// System.out.println("To Parse: "+data); + try + { + JSONArray datain = null; + datain = new JSONArray(data); + String event = datain.getString(0); + String dataout = ""; + StringBuilder builder = new StringBuilder(); + for(int i = 1; i < datain.length(); i++) + { + builder.append(','); + if (datain.isNull(i) == false) + builder.append(datain.getString(i)); + } + dataout = builder.substring(1); +// System.out.println("Event: "+event); +// System.out.println("Data Out: "+dataout); + if("message".equals(event)) + { + this.type = TYPE_JSON_MESSAGE; + this.setData(dataout); + } + else + { + this.type = TYPE_EVENT; + JSONObject jdataout = new JSONObject() + .put("name",event) + .put("args",new JSONArray("["+dataout+"]")); + this.setData(jdataout.toString()); + } + + }catch (JSONException e) + { + System.err.println("Malformed Message received"); + } + } break; + case 3: + this.type = TYPE_ACK; + break; + case 4: + this.type = TYPE_ERROR; + break; + case 5: + this.type = TYPE_BINARY_EVENT; + + break; + case 6: + this.type = TYPE_BINARY_ACK; + break; + default: + this.type = TYPE_UNKNOWN; + break; + } + } break; + case 5: + this.type = TYPE_UPGRADE; + break; + case 6: + this.type = TYPE_NOOP; + break; + default: + this.type = TYPE_UNKNOWN; + break; + } + this.setEndpoint(endpoint); + } break; } + + } /** * Generates a String representation of this object. */ @Override - public String toString() { + public String toString() + { StringBuilder builder = new StringBuilder(); - for(int i = 0; i < fields.length; i++) { - builder.append(':'); - if (fields[i] != null) - builder.append(fields[i]); + switch (version) + { + case V09x: + { + for(int i = 0; i < fields.length; i++) + { + builder.append(':'); + if (fields[i] != null) + builder.append(fields[i]); + } + } break; + case V10x: + { + //"42["message",""] + builder.append(":42"); + builder.append(fields[FIELD_ENDPOINT]); + + switch (Integer.parseInt(fields[FIELD_TYPE])) + { + case TYPE_MESSAGE: + case TYPE_JSON_MESSAGE: + builder.append("[\"message\",\""); + builder.append(fields[FIELD_DATA]); + builder.append("\"]"); + break; + case TYPE_EVENT: + try + { + JSONObject event = new JSONObject(this.getData()); + String eventName = event.getString("name"); + JSONArray dataOut = new JSONArray(); + dataOut.put(0, eventName); + if (event.has("args")) + { + JSONArray args = event.getJSONArray("args"); + for (int i = 0; i < args.length(); i++) + { + if (args.isNull(i) == false) + dataOut.put(i+1,args.get(i)); + } + } + builder.append(dataOut.toString()); + + } catch (JSONException e) { + System.err.println("Malformated JSON To Send"); + } + default: + break; + } + + } break; } + return builder.substring(1); } @@ -152,6 +370,15 @@ public void setId(String id) { fields[FIELD_ID] = id; } + /** + * Sets the endpoint of this IOMessage. + * + * @param the endpoint + */ + private void setEndpoint(String endPoint) { + fields[FIELD_ENDPOINT] = endPoint; + } + /** * Returns the endpoint of this IOMessage. * @@ -161,6 +388,15 @@ public String getEndpoint() { return fields[FIELD_ENDPOINT]; } + /** + * Returns the data of this IOMessage. + * + * @param the data + */ + private void setData(String data) { + fields[FIELD_DATA] = data; + } + /** * Returns the data of this IOMessage. * diff --git a/src/io/socket/SocketIO.java b/src/io/socket/SocketIO.java index 26143b7..3e8be5e 100644 --- a/src/io/socket/SocketIO.java +++ b/src/io/socket/SocketIO.java @@ -42,7 +42,8 @@ public class SocketIO { * {@link #connect(String, IOCallback)} */ public SocketIO() { - + this.addHeader("Accept", "*/*"); + this.addHeader("Content Type", "text/plain"); } /** @@ -57,6 +58,8 @@ public SocketIO() { public SocketIO(final String url) throws MalformedURLException { if (url == null) throw new RuntimeException("url may not be null."); + this.addHeader("Accept", "*/*"); + this.addHeader("Content Type", "text/plain"); setAndConnect(new URL(url), null); } @@ -79,6 +82,11 @@ public SocketIO(final String url, Properties headers) if (headers != null) this.headers = headers; + else + { + this.addHeader("Accept", "*/*"); + this.addHeader("Content Type", "text/plain"); + } setAndConnect(new URL(url), null); } @@ -143,7 +151,8 @@ public static void setDefaultSSLSocketFactory(SSLContext sslContext) { */ public void connect(final String url, final IOCallback callback) throws MalformedURLException { - if (setAndConnect(new URL(url), callback) == false) { + if (setAndConnect(new URL(url), callback) == false) + { if (url == null || callback == null) throw new RuntimeException("url and callback may not be null."); else @@ -278,7 +287,8 @@ public String getNamespace() { * @param json * the JSON object */ - public void send(final JSONObject json) { + public void send(final JSONObject json) + { this.connection.send(this, null, json); } diff --git a/src/io/socket/WebsocketTransport.java b/src/io/socket/WebsocketTransport.java index 0ec9bee..0a49e65 100644 --- a/src/io/socket/WebsocketTransport.java +++ b/src/io/socket/WebsocketTransport.java @@ -1,5 +1,7 @@ package io.socket; +import io.socket.IOConnection.VersionSocketIO; + import java.io.IOException; import java.net.URI; import java.net.URL; @@ -16,11 +18,21 @@ class WebsocketTransport extends WebSocketClient implements IOTransport { private final static Pattern PATTERN_HTTP = Pattern.compile("^http"); public static final String TRANSPORT_NAME = "websocket"; private IOConnection connection; - public static IOTransport create(URL url, IOConnection connection) { + public static IOTransport create(URL url, IOConnection connection, IOConnection.VersionSocketIO version) + { + String versionAddon = ""; + switch (version) + { + case V10x: + versionAddon = "?EIO=2&transport=websocket&"; + break; + default: + break; + } URI uri = URI.create( PATTERN_HTTP.matcher(url.toString()).replaceFirst("ws") + IOConnection.SOCKET_IO_1 + TRANSPORT_NAME - + "/" + connection.getSessionId()); + + "/" + versionAddon + connection.getSessionId()); return new WebsocketTransport(uri, connection); } @@ -77,13 +89,17 @@ public void onClose(int code, String reason, boolean remote) { } @Override - public void onMessage(String text) { + public void onMessage(String text) + { + if(connection != null) connection.transportMessage(text); } @Override - public void onOpen(ServerHandshake handshakedata) { + public void onOpen(ServerHandshake handshakedata) + { + this.send("5"); if(connection != null) connection.transportConnected(); } From 1aa1da282d292fee8182b3c32e827f712b17a308 Mon Sep 17 00:00:00 2001 From: FrancoisReg Date: Thu, 3 Jul 2014 11:01:18 +0800 Subject: [PATCH 2/7] [FIX]Change message handling --- src/io/socket/IOConnection.java | 193 +++---- src/io/socket/IOMessage.java | 733 ++++++++++++++++---------- src/io/socket/WebsocketTransport.java | 3 - 3 files changed, 549 insertions(+), 380 deletions(-) diff --git a/src/io/socket/IOConnection.java b/src/io/socket/IOConnection.java index fee01fb..d571b2d 100644 --- a/src/io/socket/IOConnection.java +++ b/src/io/socket/IOConnection.java @@ -8,6 +8,8 @@ */ package io.socket; +import io.socket.IOMessage.TypeMessage; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -314,8 +316,9 @@ public synchronized boolean register(SocketIO socket) return false; sockets.put(namespace, socket); socket.setHeaders(headers); - IOMessage connect = new IOMessage(IOMessage.TYPE_CONNECT, - socket.getNamespace(), "",this.version); +// IOMessage connect = new IOMessage(IOMessage.TYPE_CONNECT, +// socket.getNamespace(), "",this.version); + IOMessage connect = IOMessage.createMessage(TypeMessage.TYPE_CONNECT, "", socket.getNamespace(), this.version); sendPlain(connect.toString()); return true; } @@ -465,7 +468,8 @@ else if (protocols.contains(XhrTransport.TRANSPORT_NAME)) * @return an {@link IOAcknowledge} instance, may be null if * server doesn't request one. */ - private IOAcknowledge remoteAcknowledge(IOMessage message) { + private IOAcknowledge remoteAcknowledge(IOMessage message) + { String _id = message.getId(); if (_id.equals("")) return null; @@ -473,21 +477,24 @@ else if (_id.endsWith("+") == false) _id = _id + "+"; final String id = _id; final String endPoint = message.getEndpoint(); - return new IOAcknowledge() { + return new IOAcknowledge() + { @Override - public void ack(Object... args) { - JSONArray array = new JSONArray(); - for (Object o : args) { - try { - array.put(o == null ? JSONObject.NULL : o); - } catch (Exception e) { - error(new SocketIOException( - "You can only put values in IOAcknowledge.ack() which can be handled by JSONArray.put()", - e)); - } - } - IOMessage ackMsg = new IOMessage(IOMessage.TYPE_ACK, endPoint, - id + array.toString(),IOConnection.this.version); + public void ack(Object... args) + { +// JSONArray array = new JSONArray(); +// for (Object o : args) { +// try { +// array.put(o == null ? JSONObject.NULL : o); +// } catch (Exception e) { +// error(new SocketIOException( +// "You can only put values in IOAcknowledge.ack() which can be handled by JSONArray.put()", +// e)); +// } +// } + IOMessage ackMsg = IOMessage.createMessage(TypeMessage.TYPE_ACK, id, endPoint,IOConnection.this.version); +// new IOMessage(IOMessage.TYPE_ACK, endPoint, +// id + array.toString(),IOConnection.this.version); sendPlain(ackMsg.toString()); } }; @@ -571,13 +578,17 @@ private void error(SocketIOException e) { private synchronized void sendPlain(String text) { if (getState() == STATE_READY) - try { - logger.info("SEND " + text); + { + try + { + logger.info("-->SEND " + text); transport.send(text); + } catch (Exception e) { logger.info("IOEx: saving"); outputBuffer.add(text); } + } else { outputBuffer.add(text); } @@ -734,17 +745,12 @@ public void transportData(String text) { */ public void transportMessage(String text) { - logger.info("Received: " + text); - IOMessage message; - try { - message = new IOMessage(text,this.version); - } catch (Exception e) { - error(new SocketIOException("Garbage from server: " + text, e)); - return; - } + logger.info("<--RCV: " + text); + IOMessage message = IOMessage.parseMessage(text, version); resetTimeout(); + switch (message.getType()) { - case IOMessage.TYPE_DISCONNECT: + case TYPE_DISCONNECT: try { findCallback(message).onDisconnect(); } catch (Exception e) { @@ -752,16 +758,14 @@ public void transportMessage(String text) "Exception was thrown in onDisconnect()", e)); } break; - case IOMessage.TYPE_CONNECT: + case TYPE_CONNECT: try { if (firstSocket != null && "".equals(message.getEndpoint())) { if (firstSocket.getNamespace().equals("")) { firstSocket.getCallback().onConnect(); } else { - IOMessage connect = new IOMessage( - IOMessage.TYPE_CONNECT, - firstSocket.getNamespace(), "",this.version); + IOMessage connect = IOMessage.createMessage(TypeMessage.TYPE_CONNECT,"",firstSocket.getNamespace(),this.version); sendPlain(connect.toString()); } } else { @@ -773,7 +777,7 @@ public void transportMessage(String text) "Exception was thrown in onConnect()", e)); } break; - case IOMessage.TYPE_HEARTBEAT: + case TYPE_HEARTBEAT: { switch (this.version) { @@ -785,7 +789,7 @@ public void transportMessage(String text) break; } }break; - case IOMessage.TYPE_PONG: + case TYPE_PONG: { switch (this.version) { @@ -798,7 +802,7 @@ public void transportMessage(String text) break; } }break; - case IOMessage.TYPE_MESSAGE: + case TYPE_MESSAGE: try { findCallback(message).onMessage(message.getData(), @@ -809,7 +813,7 @@ public void transportMessage(String text) + "Message was: " + message.toString(), e)); } break; - case IOMessage.TYPE_JSON_MESSAGE: + case TYPE_JSON_MESSAGE: try { JSONObject obj = null; @@ -828,38 +832,28 @@ public void transportMessage(String text) logger.warning("Malformated JSON received"); } break; - case IOMessage.TYPE_EVENT: + case TYPE_EVENT: { + try { - JSONObject event = new JSONObject(message.getData()); -// logger.info("Data to Parse: "+event.toString()); - Object[] argsArray; - if (event.has("args")) - { - JSONArray args = event.getJSONArray("args"); - argsArray = new Object[args.length()]; - for (int i = 0; i < args.length(); i++) - { - if (args.isNull(i) == false) - argsArray[i] = args.get(i); - } - } else - argsArray = new Object[0]; - String eventName = event.getString("name"); - try { - findCallback(message).on(eventName, - remoteAcknowledge(message), argsArray); - } catch (Exception e) { - error(new SocketIOException( - "Exception was thrown in on(String, JSONObject[]).\n" - + "Message was: " + message.toString(), e)); - } - } catch (JSONException e) { - logger.warning("Malformated JSON received"); - } + findCallback(message).on(message.getEvent(), + remoteAcknowledge(message), message.getArgs()); + } catch (Exception e) { + error(new SocketIOException( + "Exception was thrown in on(String, JSONObject[]).\n" + + "Message was: " + message.toString(), e)); + } +// try { +// findCallback(message).on(message.getEvent(), +// remoteAcknowledge(message), argsArray); +// } catch (Exception e) { +// error(new SocketIOException( +// "Exception was thrown in on(String, JSONObject[]).\n" +// + "Message was: " + message.toString(), e)); +// } } break; - case IOMessage.TYPE_ACK: + case TYPE_ACK: String[] data = message.getData().split("\\+", 2); if (data.length == 2) { try { @@ -892,7 +886,7 @@ public void transportMessage(String text) } } break; - case IOMessage.TYPE_ERROR: + case TYPE_ERROR: try { findCallback(message).onError( new SocketIOException(message.getData())); @@ -904,7 +898,11 @@ public void transportMessage(String text) cleanup(); } break; - case IOMessage.TYPE_NOOP: + case TYPE_NOOP: + break; + case TYPE_DISCONNECTED: + break; + case TYPE_CONNECTED: break; default: logger.warning("Unkown type received: " + message.getType()); @@ -947,15 +945,15 @@ public IOConnection.VersionSocketIO getVersionSocket() { return this.version; } /** - * Returns the version. This should be called from a {@link IOTransport} + * Force the connection to wait to get connected * - * @return the version used (and null if not received yet) + * @return state of connection */ public boolean canSend() { long startTime = System.nanoTime(); long elapsedTime = System.nanoTime() - startTime; - while(!isConnected() && elapsedTime < 1000000) + while(!isConnected() && elapsedTime < 5000000) { try { @@ -989,20 +987,11 @@ public void send(SocketIO socket, IOAcknowledge ack, String text) } if(this.version == VersionSocketIO.V10x ) { - try - { - text = text.replaceAll("\\\\\"", "\""); - JSONObject data = null; - data = new JSONObject(text); - this.send(socket, ack, data); - }catch (JSONException e) - { - logger.warning("Malformed JSON text (In V1.0.x only JSON can be sent)"); - } + this.emit(socket, "message", ack, text); } else { - IOMessage message = new IOMessage(IOMessage.TYPE_MESSAGE,socket.getNamespace(),text,this.version); + IOMessage message = IOMessage.createMessage(TypeMessage.TYPE_MESSAGE,"",socket.getNamespace(),text,this.version); synthesizeAck(message, ack); sendPlain(message.toString()); } @@ -1025,24 +1014,16 @@ public void send(SocketIO socket, IOAcknowledge ack, JSONObject json) logger.warning("An error occured to send your message"); return; } - IOMessage message; - switch (this.version) + if(this.version == VersionSocketIO.V10x ) { - case V09x: - message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, - socket.getNamespace(),json.toString(),this.version); - break; - case V10x: - message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, - socket.getNamespace(),json.toString().replaceAll("\"", "\\\\\""),this.version); - break; - default: - message = new IOMessage(IOMessage.TYPE_JSON_MESSAGE, - socket.getNamespace(),json.toString(),this.version); - break; - } - synthesizeAck(message, ack); - sendPlain(message.toString()); + this.emit(socket, "message", ack, json.toString()); + } + else + { + IOMessage message = IOMessage.createMessage(TypeMessage.TYPE_JSON_MESSAGE,"",socket.getNamespace(),json.toString(),this.version); + synthesizeAck(message, ack); + sendPlain(message.toString()); + } } /** @@ -1065,17 +1046,15 @@ public void emit(SocketIO socket, String event, IOAcknowledge ack, logger.warning("An error occured to send your message"); return; } - try { - JSONObject json = new JSONObject().put("name", event).put("args", - new JSONArray(Arrays.asList(args))); - IOMessage message = new IOMessage(IOMessage.TYPE_EVENT, - socket.getNamespace(), json.toString(),this.version); - synthesizeAck(message, ack); - sendPlain(message.toString()); - } catch (JSONException e) { - error(new SocketIOException( - "Error while emitting an event. Make sure you only try to send arguments, which can be serialized into JSON.")); + IOMessage message = IOMessage.createMessage(TypeMessage.TYPE_EVENT,"", + socket.getNamespace(),this.version); + message.setEvent(event); + for (Object i : args) + { + message.addData(i); } + synthesizeAck(message, ack); + sendPlain(message.toString()); } /** diff --git a/src/io/socket/IOMessage.java b/src/io/socket/IOMessage.java index 1017173..29819e6 100644 --- a/src/io/socket/IOMessage.java +++ b/src/io/socket/IOMessage.java @@ -9,85 +9,135 @@ package io.socket; import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.logging.Logger; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections; + import io.socket.IOConnection.VersionSocketIO; /** * The Class IOMessage. */ -class IOMessage { - - /** Message type Unknown*/ - public static final int TYPE_UNKNOWN= -1; - - /** Message type disconnect */ - public static final int TYPE_DISCONNECT = 0; - - /** Message type connect */ - public static final int TYPE_CONNECT = 1; - - /** Message type heartbeat/ping */ - public static final int TYPE_HEARTBEAT = 2; - - /** Message type pong */ - public static final int TYPE_PONG = 9; - - /** Message type message */ - public static final int TYPE_MESSAGE = 3; - - /** Message type JSON message */ - public static final int TYPE_JSON_MESSAGE = 4; - - /** Message type event */ - public static final int TYPE_EVENT = 5; - - /** Message type acknowledge */ - public static final int TYPE_ACK = 6; - - /** Message type error */ - public static final int TYPE_ERROR = 7; - - /** Message type noop */ - public static final int TYPE_NOOP = 8; - - /** Message type Binary Event */ - public static final int TYPE_BINARY_EVENT= 9; - - /** Message type Binary ACK*/ - public static final int TYPE_BINARY_ACK = 10; +class IOMessage +{ + /** Debug logger */ + static final Logger logger = Logger.getLogger("io.message"); - /** Message type Upgrade required */ - public static final int TYPE_UPGRADE = 11; + public enum TypeMessage { TYPE_UNKNOWN, + TYPE_DISCONNECT, + TYPE_DISCONNECTED, + TYPE_CONNECT, + TYPE_CONNECTED, + TYPE_HEARTBEAT, + TYPE_PONG, + TYPE_MESSAGE, + TYPE_JSON_MESSAGE, + TYPE_EVENT, + TYPE_ACK, + TYPE_ERROR, + TYPE_NOOP, + TYPE_BINARY_EVENT, + TYPE_BINARY_ACK, + TYPE_UPGRADE, + }; /** Index of the type field in a message */ - public static final int FIELD_TYPE = 0; + public static final int FIELD_CONTROL = 0; /** Index of the id field in a message */ public static final int FIELD_ID = 1; /** Index of the end point field in a message */ public static final int FIELD_ENDPOINT = 2; - - /** Index of the data field in a message */ + + /** Index of the end point field in a message */ public static final int FIELD_DATA = 3; /** Number of fields in a message. */ - public static final int NUM_FIELDS = 4; + public static final int NUM_FIELDS = 3; - /** The field values */ - private final String[] fields = new String[NUM_FIELDS]; + public static final int NUM_FIELDS_MESSAGE = 4; + /** The field values */ + protected final String[] fields = new String[NUM_FIELDS]; + + protected JSONArray args = new JSONArray(); + protected String data; + + private String separator = ":"; + + /** Type */ - private int type; + protected TypeMessage type; // CAN BE TYPE_DISCONNECT,TYPE_CONNECT, TYPE_MESSAGE + + /** Event name*/ + protected String eventName = ""; // CAN BE "message","myevent","anything" + + /** Acknoledgement*/ + protected String ack = ""; // CAN BE "message","myevent","anything" - private IOConnection.VersionSocketIO version; +// /** +// * Instantiates a new IOMessage by given data. +// * +// * @param type +// * the type +// * @param id +// * the id +// * @param namespace +// * the namespace +// * @param data +// * the data +// */ +// protected IOMessage(TypeMessage type, String id, String namespace, String data) +// { +// this.type = type; +// this.fields[FIELD_ID] = id; +// this.fields[FIELD_CONTROL] = "" + type; +// this.fields[FIELD_ENDPOINT] = namespace; +// this.data = data; +// args.put(data); +// } + + private static final Map messages_codes = createMapMessages(); + + private static final Map createMapMessages() + { + Map result= new HashMap() ; + result.put(0, IOMessage.TypeMessage.TYPE_DISCONNECT); + result.put(1, IOMessage.TypeMessage.TYPE_CONNECT); + result.put(2, IOMessage.TypeMessage.TYPE_HEARTBEAT); + result.put(3, IOMessage.TypeMessage.TYPE_MESSAGE); + result.put(4, IOMessage.TypeMessage.TYPE_JSON_MESSAGE); + result.put(5, IOMessage.TypeMessage.TYPE_EVENT); + result.put(6, IOMessage.TypeMessage.TYPE_ACK); + result.put(7, IOMessage.TypeMessage.TYPE_ERROR); + result.put(8, IOMessage.TypeMessage.TYPE_NOOP); + //return Collections.unmodifiableMap(result); + return result; + } /** * Instantiates a new IOMessage by given data. + */ + protected IOMessage() + { + this.type = TypeMessage.TYPE_UNKNOWN; + this.fields[FIELD_ID] = ""; + this.fields[FIELD_CONTROL] = ""; + this.fields[FIELD_ENDPOINT] = ""; + this.data = ""; + } + + /** + * Instantiates a new IOMessage without data. * * @param type * the type @@ -95,32 +145,67 @@ class IOMessage { * the id * @param namespace * the namespace - * @param data - * the data */ - public IOMessage(int type, String id, String namespace, String data,IOConnection.VersionSocketIO version) + protected IOMessage(TypeMessage type, String id, String namespace) { - this.version = version; this.type = type; this.fields[FIELD_ID] = id; - this.fields[FIELD_TYPE] = "" + type; + this.fields[FIELD_CONTROL] = "" + getControlNumber(type); this.fields[FIELD_ENDPOINT] = namespace; - this.fields[FIELD_DATA] = data; } - - /** - * Instantiates a new IOMessage by given data. - * - * @param type - * the type - * @param namespace - * the name space - * @param data - * the data - */ - public IOMessage(int type, String namespace, String data,IOConnection.VersionSocketIO version) + + protected int getControlNumber(TypeMessage type) { - this(type, null, namespace, data,version); + for (Entry entry : messages_codes.entrySet()) + { + if (type.equals(entry.getValue())) { + return entry.getKey(); + } + } + return 0; + } + + public static IOMessage parseMessage(String message, IOConnection.VersionSocketIO version) + { + IOMessage messageOut; + switch (version) + { + case V09x: + messageOut = new IOMessage(message); + break; + case V10x: + messageOut = new IOMessageV10x(message); + break; + default: + messageOut = new IOMessage(message); + break; + } + return messageOut; + } + + public static IOMessage createMessage(TypeMessage type, String id, String namespace, String data, IOConnection.VersionSocketIO version) + { + IOMessage messageOut; + switch (version) + { + case V09x: + messageOut = new IOMessage(type,id,namespace); + break; + case V10x: + messageOut = new IOMessageV10x(type,id,namespace); + break; + default: + messageOut = new IOMessage(type,id,namespace); + break; + } + if(data != "") + messageOut.addData(data); + return messageOut; + } + + public static IOMessage createMessage(TypeMessage type, String id, String namespace,IOConnection.VersionSocketIO version) + { + return createMessage(type,id,namespace,"",version); } /** @@ -132,215 +217,79 @@ public IOMessage(int type, String namespace, String data,IOConnection.VersionSoc * @param version * The parsing for a socket io 0.9.x and 1.0.x are different */ - public IOMessage(String message,IOConnection.VersionSocketIO version) + protected IOMessage(String message) { - this.version = version; - switch (this.version) + String[] fields = message.split(":", NUM_FIELDS_MESSAGE); + this.fields[FIELD_CONTROL] = fields[FIELD_CONTROL]; + this.fields[FIELD_ENDPOINT] = fields[FIELD_ENDPOINT]; + this.fields[FIELD_ID] = fields[FIELD_ID]; + this.type = messages_codes.get(Integer.parseInt(this.fields[FIELD_CONTROL])); + if(this.type == TypeMessage.TYPE_MESSAGE) { - case V09x: - String[] fields = message.split(":", NUM_FIELDS); - for (int i = 0; i < fields.length; i++) { - this.fields[i] = fields[i]; - if(i == FIELD_TYPE) - this.type = Integer.parseInt(fields[i]); - } - break; - case V10x: + args.put(data); + data = fields[FIELD_DATA]; + } + else if(this.type == TypeMessage.TYPE_EVENT) + { + data = fields[FIELD_DATA]; + try { - //42["message","{\"type\":\"redirect\",\"url\":\"/logout\",\"rid\":\"test\",\"info\":\"Internal error: could not get csInfo.\",\"action\":\"reject\"}"] - int control = message.charAt(0) - '0'; - String data = message.substring(1); - String endpoint = ""; - - this.fields[FIELD_ID] = ""; - switch (control) + JSONObject event = new JSONObject(data); + if (event.has("args")) { - case 0: - this.type = TYPE_UNKNOWN; - break; - case 1: - this.type = TYPE_UNKNOWN; - break; - case 2: - this.type = TYPE_HEARTBEAT; - this.setData(data); - break; - case 3: - this.type = TYPE_PONG; - this.setData(data); - break; - case 4: - { - control = data.charAt(0) - '0'; - data = data.substring(1); - int iendpoint = data.indexOf('['); - if(iendpoint != -1) - endpoint = data.substring(0,iendpoint); - switch (control) - { - case 0: - this.type = TYPE_CONNECT; - break; - case 1: - this.type = TYPE_DISCONNECT; - break; - case 2: - { - //event - //5::: - //message - // ["message","{\"type\":\"message sendWith backslash\"}"] -// System.out.println("To Parse: "+data); -// int extraQuote = data.lastIndexOf("}\""); -// if(extraQuote != -1) -// { -// StringBuilder b = new StringBuilder(data); -// b.replace(extraQuote,extraQuote+2, "}" ); -// data = b.toString(); -// data = data.replace("\"{", "{"); -//// data = data.replaceAll("}\"", "}"); -// } - // - while(data.indexOf("}\",\"{") != -1) - data = data.replace("}\",\"{", "},{"); - data = data.replace(",\"{", ",{"); - data = data.replace("}\"]", "}]"); - // ["message",{\"type\":\"message sendWith backslash\"}] - data = data.replaceAll("\\\\\\\\\\\\\"", "\""); - data = data.replaceAll("\\\\\"", "\""); - // ["message",{"type":"message sendWith backslash"}] -// System.out.println("To Parse: "+data); - try - { - JSONArray datain = null; - datain = new JSONArray(data); - String event = datain.getString(0); - String dataout = ""; - StringBuilder builder = new StringBuilder(); - for(int i = 1; i < datain.length(); i++) - { - builder.append(','); - if (datain.isNull(i) == false) - builder.append(datain.getString(i)); - } - dataout = builder.substring(1); -// System.out.println("Event: "+event); -// System.out.println("Data Out: "+dataout); - if("message".equals(event)) - { - this.type = TYPE_JSON_MESSAGE; - this.setData(dataout); - } - else - { - this.type = TYPE_EVENT; - JSONObject jdataout = new JSONObject() - .put("name",event) - .put("args",new JSONArray("["+dataout+"]")); - this.setData(jdataout.toString()); - } - - }catch (JSONException e) - { - System.err.println("Malformed Message received"); - } - } break; - case 3: - this.type = TYPE_ACK; - break; - case 4: - this.type = TYPE_ERROR; - break; - case 5: - this.type = TYPE_BINARY_EVENT; - - break; - case 6: - this.type = TYPE_BINARY_ACK; - break; - default: - this.type = TYPE_UNKNOWN; - break; - } - } break; - case 5: - this.type = TYPE_UPGRADE; - break; - case 6: - this.type = TYPE_NOOP; - break; - default: - this.type = TYPE_UNKNOWN; - break; + args = event.getJSONArray("args"); } - this.setEndpoint(endpoint); - } break; - } - - + this.eventName = event.getString("name"); + + } catch (JSONException e) { + logger.warning("Malformated JSON received"); + } + } } - + /** * Generates a String representation of this object. */ @Override public String toString() { - StringBuilder builder = new StringBuilder(); - switch (version) - { - case V09x: - { - for(int i = 0; i < fields.length; i++) - { - builder.append(':'); - if (fields[i] != null) - builder.append(fields[i]); - } - } break; - case V10x: + StringBuilder builder = new StringBuilder(); + builder.append(this.fields[FIELD_CONTROL]); + builder.append(this.separator); + + String pIdL = this.fields[FIELD_ID]; + if (ack == "data") + { + pIdL += "+"; + } + + // Do not write pid for acknowledgements + if (this.type != TypeMessage.TYPE_ACK) + { + builder.append(pIdL); + } + builder.append(this.separator); + + // Add the end point for the namespace to be used, as long as it is not + // an ACK, heartbeat, or disconnect packet + if (this.type != TypeMessage.TYPE_ACK + && this.type != TypeMessage.TYPE_HEARTBEAT + && this.type != TypeMessage.TYPE_DISCONNECT) + builder.append(this.fields[FIELD_ENDPOINT]); + builder.append(this.separator); + + if (args.length() != 0) + { + String ackpId = ""; + // This is an acknowledgement packet, so, prepend the ack pid to the data + if (this.type == TypeMessage.TYPE_ACK) { - //"42["message",""] - builder.append(":42"); - builder.append(fields[FIELD_ENDPOINT]); - - switch (Integer.parseInt(fields[FIELD_TYPE])) - { - case TYPE_MESSAGE: - case TYPE_JSON_MESSAGE: - builder.append("[\"message\",\""); - builder.append(fields[FIELD_DATA]); - builder.append("\"]"); - break; - case TYPE_EVENT: - try - { - JSONObject event = new JSONObject(this.getData()); - String eventName = event.getString("name"); - JSONArray dataOut = new JSONArray(); - dataOut.put(0, eventName); - if (event.has("args")) - { - JSONArray args = event.getJSONArray("args"); - for (int i = 0; i < args.length(); i++) - { - if (args.isNull(i) == false) - dataOut.put(i+1,args.get(i)); - } - } - builder.append(dataOut.toString()); - - } catch (JSONException e) { - System.err.println("Malformated JSON To Send"); - } - default: - break; - } - - } break; + ackpId += pIdL+"+"; + } + builder.append(ackpId); + builder.append(this.stringify()); } - - return builder.substring(1); + return builder.toString(); } /** @@ -348,7 +297,7 @@ public String toString() * * @return the type */ - public int getType() { + public TypeMessage getType() { return type; } @@ -369,6 +318,24 @@ public String getId() { public void setId(String id) { fields[FIELD_ID] = id; } + + /** + * Returns the eventName of this IOMessage. + * + * @return the eventName + */ + public String getEvent() { + return eventName; + } + + /** + * Sets the event name of this IOMessage + * + * @param event + */ + public void setEvent(String event) { + eventName = event; + } /** * Sets the endpoint of this IOMessage. @@ -389,12 +356,25 @@ public String getEndpoint() { } /** - * Returns the data of this IOMessage. + * Add data element + * Careful: one message type in V0.9.x can only have one element + * + * @param the data + */ + public void addData(String data) + { + this.data += data; + args.put(data); + } + + /** + * Add Data element * * @param the data */ - private void setData(String data) { - fields[FIELD_DATA] = data; + public void addData(Object data) + { + args.put(data); } /** @@ -402,8 +382,221 @@ private void setData(String data) { * * @return the data */ - public String getData() { - return fields[FIELD_DATA]; + public String getData() + { + return data; + } + + /** + * Returns the args. + * + * @return the data received in objet array form + */ + public Object[] getArgs() + { + Object[] argsArray; + argsArray = new Object[args.length()]; + try + { + for (int i = 0; i < args.length(); i++) + { + if (args.isNull(i) == false) + argsArray[i] = args.get(i); + } + } catch (JSONException e) + { + logger.warning("Error when exporting the data: "+e.toString()); + } + return argsArray; + } + + /** + * Stringify the data. + * + * @return the data stringified + */ + public String stringify() + { + String res = ""; + try + { + if(this.type == TypeMessage.TYPE_MESSAGE || this.type == TypeMessage.TYPE_JSON_MESSAGE ) + res = args.get(0).toString(); + else if(this.type == TypeMessage.TYPE_EVENT) + { + JSONObject event = new JSONObject(); + event.put("args", args); + event.put("name", eventName); + res = event.toString(); + } + else + res = this.getData(); + } catch (JSONException e) + { + logger.warning("Error when stringify data: "+e.toString()); + } + return res; } } + + +class IOMessageV10x extends IOMessage +{ + private String separator = ""; + private static final Map messages_codes = createMapMessages(); + private static final Map createMapMessages() + { + Map result= new HashMap() ; + result.put(0, IOMessage.TypeMessage.TYPE_DISCONNECT); + result.put(1, IOMessage.TypeMessage.TYPE_CONNECTED); + result.put(2, IOMessage.TypeMessage.TYPE_HEARTBEAT); + result.put(3, IOMessage.TypeMessage.TYPE_PONG); + result.put(4, IOMessage.TypeMessage.TYPE_MESSAGE); + result.put(5, IOMessage.TypeMessage.TYPE_UPGRADE); + result.put(6, IOMessage.TypeMessage.TYPE_NOOP); + result.put(40, IOMessage.TypeMessage.TYPE_CONNECT); + result.put(41, IOMessage.TypeMessage.TYPE_DISCONNECTED); + result.put(42, IOMessage.TypeMessage.TYPE_EVENT); + result.put(43, IOMessage.TypeMessage.TYPE_ACK); + result.put(44, IOMessage.TypeMessage.TYPE_ERROR); + result.put(45, IOMessage.TypeMessage.TYPE_BINARY_EVENT); + result.put(46, IOMessage.TypeMessage.TYPE_BINARY_ACK); + //return Collections.unmodifiableMap(result); + return result; + } + + + protected IOMessageV10x(TypeMessage type, String id, String namespace) + { + this.type = type; + this.fields[FIELD_ID] = id; + this.fields[FIELD_CONTROL] = "" + getControlNumber(type); + this.fields[FIELD_ENDPOINT] = namespace; + } + + protected IOMessageV10x(String message) + { + //42["message","{\"type\":\"redirect\",\"url\":\"/logout\",\"rid\":\"test\",\"info\":\"Internal error: could not get csInfo.\",\"action\":\"reject\"}"] + int control = message.charAt(0) - '0'; + data = message.substring(1); + if(messages_codes.get(control) == IOMessage.TypeMessage.TYPE_MESSAGE) + { + control = 40; + control += data.charAt(0) - '0'; + data = data.substring(1); + } + this.fields[FIELD_CONTROL] = String.valueOf(control); + this.type = messages_codes.get(control); + + String endpoint = ""; + int nendpoint = data.indexOf("["); + if(nendpoint != -1) + { + endpoint = data.substring(0, nendpoint); + data = data.substring(nendpoint); + } + this.fields[FIELD_ENDPOINT] = endpoint; + this.fields[FIELD_ID] = ""; + + if(this.type == TypeMessage.TYPE_EVENT) + { + JSONArray arraydata; + try + { + arraydata = new JSONArray(data); + eventName = arraydata.getString(0); + for (int i = 1; i < arraydata.length(); ++i) + { + args.put(arraydata.get(i)); + } + } catch (JSONException e) + { + + } + + } + } + + protected int getControlNumber(TypeMessage type) + { + for (Entry entry : messages_codes.entrySet()) + { + if (type.equals(entry.getValue())) { + return entry.getKey(); + } + } + return 0; + } + + /** + * Returns the data of this IOMessage. + * + * @return the data + */ + public String stringify() + { + String res = ""; + if(this.type == TypeMessage.TYPE_EVENT) + { + JSONArray event = new JSONArray(); + event.put(eventName); + try { + for (int i=0; i Date: Thu, 3 Jul 2014 11:25:14 +0800 Subject: [PATCH 3/7] [FIX]Improve polymorphism in message classes --- src/io/socket/IOCallback.java | 1 + src/io/socket/IOMessage.java | 80 +++++++++-------------------------- 2 files changed, 22 insertions(+), 59 deletions(-) diff --git a/src/io/socket/IOCallback.java b/src/io/socket/IOCallback.java index f45d32c..8f8b95d 100644 --- a/src/io/socket/IOCallback.java +++ b/src/io/socket/IOCallback.java @@ -12,6 +12,7 @@ /** * The Interface IOCallback. A callback interface to SocketIO + * WARNING: Do NOT use "Thread.sleep" in the callback methods */ public interface IOCallback { diff --git a/src/io/socket/IOMessage.java b/src/io/socket/IOMessage.java index 29819e6..ca6c814 100644 --- a/src/io/socket/IOMessage.java +++ b/src/io/socket/IOMessage.java @@ -72,7 +72,7 @@ public enum TypeMessage { TYPE_UNKNOWN, protected JSONArray args = new JSONArray(); protected String data; - private String separator = ":"; + protected String separator = ":"; /** Type */ @@ -106,9 +106,9 @@ public enum TypeMessage { TYPE_UNKNOWN, // args.put(data); // } - private static final Map messages_codes = createMapMessages(); + protected final Map messages_codes = this.createMapMessages(); - private static final Map createMapMessages() + protected Map createMapMessages() { Map result= new HashMap() ; result.put(0, IOMessage.TypeMessage.TYPE_DISCONNECT); @@ -156,7 +156,7 @@ protected IOMessage(TypeMessage type, String id, String namespace) protected int getControlNumber(TypeMessage type) { - for (Entry entry : messages_codes.entrySet()) + for (Entry entry : this.messages_codes.entrySet()) { if (type.equals(entry.getValue())) { return entry.getKey(); @@ -442,13 +442,12 @@ else if(this.type == TypeMessage.TYPE_EVENT) class IOMessageV10x extends IOMessage -{ - private String separator = ""; - private static final Map messages_codes = createMapMessages(); - private static final Map createMapMessages() +{ + @Override + protected Map createMapMessages() { Map result= new HashMap() ; - result.put(0, IOMessage.TypeMessage.TYPE_DISCONNECT); + result.put(0, IOMessage.TypeMessage.TYPE_DISCONNECTED); result.put(1, IOMessage.TypeMessage.TYPE_CONNECTED); result.put(2, IOMessage.TypeMessage.TYPE_HEARTBEAT); result.put(3, IOMessage.TypeMessage.TYPE_PONG); @@ -456,7 +455,7 @@ private static final Map createMapMessages() result.put(5, IOMessage.TypeMessage.TYPE_UPGRADE); result.put(6, IOMessage.TypeMessage.TYPE_NOOP); result.put(40, IOMessage.TypeMessage.TYPE_CONNECT); - result.put(41, IOMessage.TypeMessage.TYPE_DISCONNECTED); + result.put(41, IOMessage.TypeMessage.TYPE_DISCONNECT); result.put(42, IOMessage.TypeMessage.TYPE_EVENT); result.put(43, IOMessage.TypeMessage.TYPE_ACK); result.put(44, IOMessage.TypeMessage.TYPE_ERROR); @@ -469,15 +468,19 @@ private static final Map createMapMessages() protected IOMessageV10x(TypeMessage type, String id, String namespace) { - this.type = type; - this.fields[FIELD_ID] = id; - this.fields[FIELD_CONTROL] = "" + getControlNumber(type); - this.fields[FIELD_ENDPOINT] = namespace; + super(type,id,namespace); + ///OVERWRITE + separator = ""; + this.fields[FIELD_CONTROL] = "" + this.getControlNumber(type); + ///OVERWRITE END } protected IOMessageV10x(String message) { - //42["message","{\"type\":\"redirect\",\"url\":\"/logout\",\"rid\":\"test\",\"info\":\"Internal error: could not get csInfo.\",\"action\":\"reject\"}"] + ///OVERWRITE + separator = ""; + ///OVERWRITE END + //42["message","{\"type\":\"redirect\",\"url\":\"/logout\",\"rid\":\"test\",\"action\":\"reject\"}"] int control = message.charAt(0) - '0'; data = message.substring(1); if(messages_codes.get(control) == IOMessage.TypeMessage.TYPE_MESSAGE) @@ -520,13 +523,7 @@ protected IOMessageV10x(String message) protected int getControlNumber(TypeMessage type) { - for (Entry entry : messages_codes.entrySet()) - { - if (type.equals(entry.getValue())) { - return entry.getKey(); - } - } - return 0; + return super.getControlNumber(type); } /** @@ -534,6 +531,7 @@ protected int getControlNumber(TypeMessage type) * * @return the data */ + @Override public String stringify() { String res = ""; @@ -560,43 +558,7 @@ public String stringify() @Override public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append(this.fields[FIELD_CONTROL]); - builder.append(this.separator); - - String pIdL = this.fields[FIELD_ID]; - if (ack == "data") - { - pIdL += "+"; - } - - // Do not write pid for acknowledgements - if (this.type != TypeMessage.TYPE_ACK) - { - builder.append(pIdL); - } - builder.append(this.separator); - - // Add the end point for the namespace to be used, as long as it is not - // an ACK, heartbeat, or disconnect packet - if (this.type != TypeMessage.TYPE_ACK - && this.type != TypeMessage.TYPE_HEARTBEAT - && this.type != TypeMessage.TYPE_DISCONNECT) - builder.append(this.fields[FIELD_ENDPOINT]); - builder.append(this.separator); - - if (args.length() != 0) - { - String ackpId = ""; - // This is an acknowledgement packet, so, prepend the ack pid to the data - if (this.type == TypeMessage.TYPE_ACK) - { - ackpId += pIdL+"+"; - } - builder.append(ackpId); - builder.append(this.stringify()); - } - return builder.toString(); + return super.toString(); } } \ No newline at end of file From 662f26cdbbb4f26dd0693cb630731858233802fe Mon Sep 17 00:00:00 2001 From: FrancoisReg Date: Thu, 3 Jul 2014 11:35:53 +0800 Subject: [PATCH 4/7] [PERF]Use of the polymorphism --- src/io/socket/IOConnection.java | 48 +++++++-------------------------- 1 file changed, 10 insertions(+), 38 deletions(-) diff --git a/src/io/socket/IOConnection.java b/src/io/socket/IOConnection.java index d571b2d..d5e36d2 100644 --- a/src/io/socket/IOConnection.java +++ b/src/io/socket/IOConnection.java @@ -184,16 +184,7 @@ public void run() { connectTransport(); if (!keepAliveInQueue) { - switch (IOConnection.this.version) - { - case V09x: - sendPlain("2::"); - - break; - case V10x: - sendPlain("2"); - break; - } + sendPlain(IOMessage.createMessage(TypeMessage.TYPE_HEARTBEAT,"","", version).toString()); keepAliveInQueue = true; } } @@ -217,15 +208,7 @@ public void run() { if (IOConnection.this.getState() == STATE_READY) { - switch (IOConnection.this.version) - { - case V09x: - sendPlain("2::"); - break; - case V10x: - sendPlain("2"); - break; - } + sendPlain(IOMessage.createMessage(TypeMessage.TYPE_HEARTBEAT,"","", version).toString()); } } } @@ -331,16 +314,8 @@ public synchronized boolean register(SocketIO socket) * the socket to be shut down */ public synchronized void unregister(SocketIO socket) - { - switch (this.version) - { - case V09x: - sendPlain("0::" + socket.getNamespace()); - break; - case V10x: - sendPlain("0"+ socket.getNamespace()); - break; - } + { + sendPlain(IOMessage.createMessage(TypeMessage.TYPE_DISCONNECT, "", socket.getNamespace(), version).toString()); sockets.remove(socket.getNamespace()); socket.getCallback().onDisconnect(); @@ -791,16 +766,13 @@ public void transportMessage(String text) }break; case TYPE_PONG: { - switch (this.version) + if(message.getData() == "probe") { - case V09x: - //Doesn't exist - break; - case V10x: - if("probe".equals(message.getData())) - sendPlain("5"+message.getData()); - break; - } + sendPlain(IOMessage.createMessage( + TypeMessage.TYPE_UPGRADE, + "","probe", + message.getEndpoint(), version).toString()); + } }break; case TYPE_MESSAGE: try From 0b58e583c6b2d72d1aa510382542be7ef1748e1d Mon Sep 17 00:00:00 2001 From: FrancoisReg Date: Thu, 10 Jul 2014 10:14:44 +0800 Subject: [PATCH 5/7] [FIX]Remove unused import --- src/io/socket/IOConnection.java | 3 --- src/io/socket/IOMessage.java | 6 ------ src/io/socket/SocketIO.java | 1 - 3 files changed, 10 deletions(-) diff --git a/src/io/socket/IOConnection.java b/src/io/socket/IOConnection.java index d5e36d2..863ae06 100644 --- a/src/io/socket/IOConnection.java +++ b/src/io/socket/IOConnection.java @@ -12,7 +12,6 @@ import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; @@ -25,7 +24,6 @@ import java.util.List; import java.util.Map.Entry; import java.util.Properties; -import java.util.Scanner; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ConcurrentLinkedQueue; @@ -35,7 +33,6 @@ import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; import org.json.JSONArray; import org.json.JSONException; diff --git a/src/io/socket/IOMessage.java b/src/io/socket/IOMessage.java index ca6c814..3000923 100644 --- a/src/io/socket/IOMessage.java +++ b/src/io/socket/IOMessage.java @@ -8,9 +8,7 @@ */ package io.socket; -import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.logging.Logger; @@ -19,10 +17,6 @@ import org.json.JSONException; import org.json.JSONObject; -import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections; - -import io.socket.IOConnection.VersionSocketIO; - /** * The Class IOMessage. */ diff --git a/src/io/socket/SocketIO.java b/src/io/socket/SocketIO.java index 3e8be5e..dc76ca7 100644 --- a/src/io/socket/SocketIO.java +++ b/src/io/socket/SocketIO.java @@ -13,7 +13,6 @@ import java.util.Properties; import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; import org.json.JSONObject; From 47592021566ef005d7fbc39805cccf510b71a54d Mon Sep 17 00:00:00 2001 From: FrancoisReg Date: Wed, 16 Jul 2014 12:14:05 +0800 Subject: [PATCH 6/7] [FIX]Fill data in any case when parsing --- src/io/socket/IOMessage.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/io/socket/IOMessage.java b/src/io/socket/IOMessage.java index 3000923..a088b2d 100644 --- a/src/io/socket/IOMessage.java +++ b/src/io/socket/IOMessage.java @@ -218,12 +218,7 @@ protected IOMessage(String message) this.fields[FIELD_ENDPOINT] = fields[FIELD_ENDPOINT]; this.fields[FIELD_ID] = fields[FIELD_ID]; this.type = messages_codes.get(Integer.parseInt(this.fields[FIELD_CONTROL])); - if(this.type == TypeMessage.TYPE_MESSAGE) - { - args.put(data); - data = fields[FIELD_DATA]; - } - else if(this.type == TypeMessage.TYPE_EVENT) + if(this.type == TypeMessage.TYPE_EVENT) { data = fields[FIELD_DATA]; try @@ -238,7 +233,12 @@ else if(this.type == TypeMessage.TYPE_EVENT) } catch (JSONException e) { logger.warning("Malformated JSON received"); } - } + } + else + { + data = fields[FIELD_DATA]; + args.put(data); + } } /** From 3da5ac2f7d5564f23f79897d4213e787df38639a Mon Sep 17 00:00:00 2001 From: Sajid Hussain Date: Thu, 4 Dec 2014 15:27:00 +0800 Subject: [PATCH 7/7] [ENH] Updated WebSocket.jar to the version '05d2e2ed045d955947d944d7111ce3e6758843b6' Dated:August 10, 2014 to support SSL --- libs/WebSocket.jar | Bin 93556 -> 95590 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 libs/WebSocket.jar diff --git a/libs/WebSocket.jar b/libs/WebSocket.jar old mode 100644 new mode 100755 index ef3637901d8f12bdc1fa8c30808082d7b82a327e..1daaf13abc04faa752fc32ddb9f93100aaa5a350 GIT binary patch literal 95590 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Π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 D5iRln delta 86473 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