我打算将nchan用于通知系统,其中页面加载客户端将订阅频道,然后发布者将发布到用户特定频道,通知将通过SSE发送给客户。
所以我面对这个解决方案的问题是,在第一次订阅nchan时,它会收到更旧的消息,这些消息在订阅频道之前发布。虽然我可以使用基于时间戳的消息ID来过滤掉较旧的消息,但这需要客户端和服务器上的时钟同步,这很难实现。
因此,如果有任何配置或解决方法,我可以做到这一点,请告诉我,这将是非常有帮助的。
答案 0 :(得分:2)
我应该比实际做的更多地研究文档:)。
我只需要将 nchan_subscriber_first_message 设置为最新的订户位置。
nchan_redis_url "redis://localhost:6379/6";
location = /sub {
nchan_subscriber;
nchan_channel_id $arg_id;
nchan_use_redis on;
nchan_subscriber_first_message newest;
}
location = /pub {
nchan_publisher;
nchan_channel_id $arg_id;
nchan_use_redis on;
}
location = /pubsub {
nchan_pubsub;
nchan_channel_id $arg_id;
nchan_channel_group test;
nchan_use_redis on;
nchan_subscriber_first_message newest;
}