From 98467ccb38553e0e7467172d9fe71946e6a34b59 Mon Sep 17 00:00:00 2001 From: Redliver Date: Thu, 22 Nov 2018 11:28:51 +0800 Subject: [PATCH] fix invalid namespace socketio.js 2.0 + netty-socketio-1.7.16 reason: namespace request payload contains url query string info, like `8:40/chat,` `49:40/chatroom?uid=ba7822bee25940ada9d2a987670afc5d,` it does'n match `/chat` or `/chatroom` in namespacehub fix: sub the query string --- .../socketio/protocol/PacketDecoder.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java index 54dfd56..5a6adb3 100644 --- a/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java +++ b/src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java @@ -279,7 +279,7 @@ public class PacketDecoder { if (packet.getType() == PacketType.MESSAGE) { if (packet.getSubType() == PacketType.CONNECT || packet.getSubType() == PacketType.DISCONNECT) { - packet.setNsp(readString(frame)); + packet.setNsp(readNamespace(frame)); } if (packet.hasAttachments() && !packet.isAttachmentsLoaded()) { @@ -309,5 +309,22 @@ public class PacketDecoder { } } } + + private String readNamespace(ByteBuf frame){ + /** + * namespace post request with url queryString, like + * /message?a=1, + * /message, + */ + int endIndex = frame.bytesBefore((byte)'?'); + if(endIndex > 0){ + return readString(frame,endIndex); + } + endIndex = frame.bytesBefore((byte)','); + if(endIndex > 0){ + return readString(frame,endIndex); + } + return readString(frame); + } }