Browse Source

Merge pull request #531 from Phipray/master

#530 fix the "fin_close" problem
master
Nikita Koksharov 7 years ago
committed by GitHub
parent
commit
abb6311a51
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java

9
src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java

@ -19,6 +19,8 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.corundumstudio.socketio.protocol.Packet;
import com.corundumstudio.socketio.protocol.PacketType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -138,12 +140,17 @@ public class WebSocketTransport extends ChannelInboundHandlerAdapter {
@Override @Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception { public void channelInactive(ChannelHandlerContext ctx) throws Exception {
ClientHead client = clientsBox.get(ctx.channel());
final Channel channel = ctx.channel();
ClientHead client = clientsBox.get(channel);
Packet packet = new Packet(PacketType.MESSAGE);
if (client != null && client.isTransportChannel(ctx.channel(), Transport.WEBSOCKET)) { if (client != null && client.isTransportChannel(ctx.channel(), Transport.WEBSOCKET)) {
log.debug("channel inactive {}", client.getSessionId()); log.debug("channel inactive {}", client.getSessionId());
client.onChannelDisconnect(); client.onChannelDisconnect();
} }
super.channelInactive(ctx); super.channelInactive(ctx);
client.send(packet);
channel.close();
ctx.close();
} }
private void handshake(ChannelHandlerContext ctx, final UUID sessionId, String path, FullHttpRequest req) { private void handshake(ChannelHandlerContext ctx, final UUID sessionId, String path, FullHttpRequest req) {

Loading…
Cancel
Save