데이터를 게시하는 공통 채널이있는 곳에서 혜성을 사용하여 시스템을 설계하고 있습니다. 클라이언트 가입 세부 정보를 기반으로 일부 조건을 사용하여 데이터를 필터링해야합니다. 아무도 내가 이것을 할 수있는 방법을 말할 수 있습니까? DataFilter를 사용하여이 작업을 수행 할 수 있다고 생각했습니다.채널의 특정 클라이언트에 대한 Cometd 필터 데이터
Channel.addDataFilter(DataFilter filter);
올바른 방법입니까? 만약 그렇다면 어떤 샘플 코드라도이 기능을 수행 할 수 있습니까?
감사합니다. 당신이 조언하고 내 의견을 제공하는 방식으로 밖으로 시도합니다. – Sudarsan
링크를 확인했습니다. 나는 그들을 사용하여 공통적 인 데이터에서 필터링을 할 수 있다는 것을 발견했다. 그러나 특정 클라이언트에 보낼 필요가없는 경우 같은 채널에서 데이터 전송을 중단해야합니다. 간단히 말해 일부 클라이언트의 경우 데이터 전송을 중단하고 다른 클라이언트의 경우 데이터 전송을 중지해야합니다. 이것에 대한 도움이 필요하십니까? 다시 한번 링크에 감사드립니다. – Sudarsan
@Suda 서로 다른 가입자에게 동일한 채널로 데이터를 다르게 보내야하는 경우 'ServerChannel.publish (...)'와 같은 API를 사용할 수 없으므로 모든 가입자에게 동일한 메시지가 전송됩니다. 대신에'ServerSession.deliver (...)'를 써야하며, 채널의 서브 크라이 머에서'ServerSession'의 목록을 가져와야합니다. 구독자를 반복하는 중이므로 'DataFilter'를 수동으로 적용하여 각 'ServerSession'에 대한 메시지를 적용/수정할 수 있습니다. 마지막으로'MessageListener'에서'false'를 반환하면 메시지 처리가 중단됩니다. – sbordet