aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koush@koushikdutta.com>2015-06-20 13:23:30 -0700
committerKoushik Dutta <koush@koushikdutta.com>2015-06-20 13:23:30 -0700
commitbbe510b87f45e7ebdcdb5101f903f7482c652712 (patch)
treec9ade96fb183eaa230f010f2cbcf2091356e346c
parenta37deb2715e4ff3ca46e2e7ca0170624905e4ce3 (diff)
parenta2195bb51b891b872aaa89fc411ffd4f33fb16f0 (diff)
downloadAndroidAsync-bbe510b87f45e7ebdcdb5101f903f7482c652712.tar.gz
AndroidAsync-bbe510b87f45e7ebdcdb5101f903f7482c652712.tar.bz2
AndroidAsync-bbe510b87f45e7ebdcdb5101f903f7482c652712.zip
Merge pull request #363 from chengg11/master
add onPing() support to client can be ware of the pings sent by server
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/HybiParser.java4
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/WebSocket.java5
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/WebSocketImpl.java12
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) {