Раздел 6.3.6.4 и нижнюю часть раздела 7.2 документации CometD обсуждает, как установить прослушиватель на канале /meta/handshake для сопоставления идентификаторов пользователей с идентификаторами ServerSessions/ServerSession. для использования в личных сообщениях. Однако при прослушивании канала /meta/handshake полученный ServerSession имеет значение null, поэтому создать карту невозможно. Есть предположения?
ОБНОВИТЬ:
На данный момент я предполагаю, что прослушиватель HandshakeHandler (добавленный в канал /meta/handshake в методе initializeMetaChannels BayeuxServerImpl.java) вызывается после или одновременно с пользовательским прослушивателем, который я создал на том же канале. Поскольку HandshakeHandler фактически создает ServerSession, это приводит к тому, что мой пользовательский прослушиватель получает null ServerSession. Это подтверждается тем фактом, что метод canHandshake из BayeuxServer SecurityPolicy, который вызывается HandshakeHandler после создания ServerSession, вызывается после моего пользовательского прослушивателя. Я предполагаю, что документация CometD, в которой говорится, что сопоставление ServerSession с UserID может быть создано из прослушивателя /meta/handshake, является ошибкой.