类的关系: frame是个 WebSocketFrame public abstract class WebSocketFrame extends DefaultByteBufHolder 而WebSocketFrame 实现: public class DefaultByteBufHolder implements ByteBufHolder { private final ByteBuf data; public DefaultByteBufHolder(ByteBuf data) { if (data == null) { throw new NullPointerException("data"); } else { this.data = data; } } public ByteBuf content() { if (this.data.refCnt() <= 0) { throw new IllegalReferenceCountException(this.data.refCnt()); } else { return this.data; } } public ByteBufHolder copy() { return new DefaultByteBufHolder(this.data.copy()); } public ByteBufHolder duplicate() { return new DefaultByteBufHolder(this.data.duplicate()); } public int refCnt() { return this.data.refCnt(); } public ByteBufHolder retain() { this.data.retain(); return this; } public ByteBufHolder retain(int increment) { this.data.retain(increment); return this; } public boolean release() { return this.data.release(); } public boolean release(int decrement) { return this.data.release(decrement); } public String toString() { return StringUtil.simpleClassName(this) + '(' + this.content().toString() + ')'; } }
前一次回答里2个类名标注了粗体字,不知何故类名都不见了。
这里设置的呗,只支持TextWebSocketFrame
刚刚突然间发现,在判断是否为CloseWebSocketFrame的时候,如果是CloseWebSocketFrame并没有return,也就是程序将会继续往下运行,然后又判断如果不是TextWebSocketFrame自然就抛异常,所以正解应该是在判断CloseWebSocketFrame时,如果是,加上return即可。
意思是将channel的id() 当做Map的key,然后value就是自身的id() 和同一个组的channel的id() 字符串组合?