Nikita 12 years ago
parent
commit
0e5c3c5cec
  1. 5
      src/main/java/com/corundumstudio/socketio/messages/XHRPacketMessage.java
  2. 5
      src/main/java/com/corundumstudio/socketio/parser/Packet.java
  3. 19
      src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java

5
src/main/java/com/corundumstudio/socketio/messages/XHRPacketMessage.java

@ -32,4 +32,9 @@ public class XHRPacketMessage extends HttpMessage {
return packet;
}
@Override
public String toString() {
return "XHRPacketMessage [packet=" + packet + "]";
}
}

5
src/main/java/com/corundumstudio/socketio/parser/Packet.java

@ -150,4 +150,9 @@ public class Packet {
return getId() != null && (isEventAck() || isJsonAck());
}
@Override
public String toString() {
return "Packet [type=" + type + ", args=" + args + ", id=" + id + "]";
}
}

19
src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java

@ -17,6 +17,9 @@ package com.corundumstudio.socketio.transport;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelPromise;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import java.util.UUID;
@ -46,8 +49,20 @@ public class XHRPollingClient extends MainBaseClient {
return origin;
}
public ChannelFuture send(Packet packet) {
return getChannel().write(new XHRPacketMessage(getSessionId(), origin, packet));
public ChannelFuture send(final Packet packet) {
ChannelPromise promise = getChannel().newPromise();
promise.addListener(new GenericFutureListener<Future<Void>>() {
@Override
public void operationComplete(Future<Void> future) throws Exception {
// channel could be closed because new channel was bound
// so we need to resend packet
if (!future.isSuccess()) {
send(packet);
}
}
});
return getChannel().write(new XHRPacketMessage(getSessionId(), origin, packet), promise);
}
}
Loading…
Cancel
Save