当我的过程死亡时,我可以自愿关闭我的扩散会话吗?

时间:2016-04-26 10:10:08

标签: push-diffusion

我正在开发一个控制客户端,将后端系统连接到主题树。后端有几千个端点,主题树有相应数量的主题。

在开发期间&测试我停止&重新启动我的客户端很多,但之前的会话在服务器上运行了60秒,这意味着我的会话将(我的主题被删除)没有执行,我的控制客户端的后续执行不能添加主题也不能注册为主题更新程序(因为之前的会话尚未过期)。

所以我杀了&重新启动Diffusion服务器,这是不优雅的,容易被遗忘。

授予会话的持续时间比单个连接更长,以确保健壮性,但在这种情况下,我希望会话关闭。如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

60秒是默认的重新连接超时。服务器在执行会话之前等待第一个会话重新连接的这段时间。

客户端可以通过配置用于建立连接的会话工厂来缩短时间或完全禁用重新连接。

Session session = Diffusion.sessions()
  .reconnectionTimeout(1000 /* ms */)
  .open("wss://myserver");

Session session = Diffusion.sessions()
  .noReconnection()
  .open("wss://myserver");

答案 1 :(得分:2)

您还没有提到您正在开发控制客户端的语言,所以我将假设Java。这个过程与其他语言类似。

会话有close method,可用于关闭会话。

由您决定如何/何时关闭会话。一种方法是使用shutdown hook

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
    public void run() {
        session.close();
    }
}, "Shutdown-thread"));

这将在程序退出时关闭会话。