部分6.3.6.4和CometD文档部分7.2的底部讨论如何在/ meta / handshake通道上建立一个Listener,将用户ID映射到ServerSessions / ServerSession ID,以便在私人消息中使用。但是,在侦听/ meta / handshake通道时,收到的ServerSession为null,因此无法创建映射。有什么想法吗?
更新:
我的假设是HandshakeHandler Listener(添加到BayeuxServerImpl.java的initializeMetaChannels方法中的/ meta / handshake通道)在我创建的自定义Listener之后或同时被调用。相同的渠道。由于HandshakeHandler实际上是创建ServerSession的,因此我的自定义Listener接收到一个null ServerSession。这是因为BayeuxServer SecurityPolicy的canHandshake方法在创建ServerSession后由HandshakeHandler调用,在我的自定义侦听器之后被调用。我假设CometD文档声明可以在/ meta / handshake Listener中构建ServerSession到UserID映射是错误的。
答案 0 :(得分:0)
您的更新分析是正确的
文档应该更新,因为会话可用的第一点是SecurityPolicy.canHandshake()
我用http://bugs.cometd.org/browse/COMETD-522跟踪了这个问题。