diff options
3 files changed, 20 insertions, 1 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/HybiParser.java b/AndroidAsync/src/com/koushikdutta/async/http/HybiParser.java index e1b4015..071fe6e 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/HybiParser.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/HybiParser.java @@ -440,8 +440,9 @@ abstract class HybiParser { } else if (opcode == OP_PING) { if (payload.length > 125) { throw new ProtocolError("Ping payload too large"); } // Log.d(TAG, "Sending pong!!"); + String message = encode(payload); sendFrame(frame(OP_PONG, payload, -1)); - + onPing(message); } else if (opcode == OP_PONG) { String message = encode(payload); onPong(message); @@ -452,6 +453,7 @@ abstract class HybiParser { protected abstract void onMessage(byte[] payload); protected abstract void onMessage(String payload); protected abstract void onPong(String payload); + protected abstract void onPing(String payload); protected abstract void onDisconnect(int code, String reason); protected abstract void report(Exception ex); diff --git a/AndroidAsync/src/com/koushikdutta/async/http/WebSocket.java b/AndroidAsync/src/com/koushikdutta/async/http/WebSocket.java index 1aaafa6..90f37ee 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/WebSocket.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/WebSocket.java @@ -7,6 +7,9 @@ public interface WebSocket extends AsyncSocket { static public interface StringCallback { public void onStringAvailable(String s); } + static public interface PingCallback { + public void onPingReceived(String s); + } static public interface PongCallback { public void onPongReceived(String s); } @@ -19,6 +22,8 @@ public interface WebSocket extends AsyncSocket { public void setStringCallback(StringCallback callback); public StringCallback getStringCallback(); + public void setPingCallback(PingCallback callback); + public void setPongCallback(PongCallback callback); public PongCallback getPongCallback(); diff --git a/AndroidAsync/src/com/koushikdutta/async/http/WebSocketImpl.java b/AndroidAsync/src/com/koushikdutta/async/http/WebSocketImpl.java index 1b82ef0..6bbd2e5 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/WebSocketImpl.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/WebSocketImpl.java @@ -99,6 +99,12 @@ public class WebSocketImpl implements WebSocket { } @Override + protected void onPing(String payload) { + if (WebSocketImpl.this.mPingCallback != null) + WebSocketImpl.this.mPingCallback.onPingReceived(payload); + } + + @Override protected void onPong(String payload) { if (WebSocketImpl.this.mPongCallback != null) WebSocketImpl.this.mPongCallback.onPongReceived(payload); @@ -255,6 +261,12 @@ public class WebSocketImpl implements WebSocket { return mStringCallback; } + private PingCallback mPingCallback; + @Override + public void setPingCallback(PingCallback callback) { + mPingCallback = callback; + } + private PongCallback mPongCallback; @Override public void setPongCallback(PongCallback callback) { |