繁体   English   中英

如何避免每五秒钟进行一次新连接?

[英]How can I avoid making a new conection every five seconds?

每五秒钟一个功能:

private boolean ping() {
    try {
        URL pingServerUrl = new URL(serverResourceLocator);
        HttpURLConnection connection = (HttpURLConnection) pingServerUrl.openConnection();
        if(connection.getResponseCode() == 200) {
            lastPingSuccessful = true;
        }
        System.out.println("pinged");
    }catch(Exception exc) {
       exc.printStackTrace(); 
       return lastPingSuccessful;
    }

    return lastPingSuccessful;

}

叫做。 它是ping功能的类型。 它尝试连接到服务器上的servlet,并发送一些凭证以及URL serverResourceLocator 困扰我的是每5秒打开一个新连接。

如何避免呢?

您无法回收HTTP连接。 HTTP是无状态协议。 最好的办法是一旦打开连接就不要关闭它,并保持其活动状态,并从服务器向客户端发送心跳消息。

如果我想使用该功能,即测试servlet,则最好将连接部分保留在其中; 您可以从测试脚本中获得更多的覆盖范围。 每5秒建立一次连接几乎没有任何意义。 服务器不会有任何感觉。

否则,仅将连接存储为全局变量。 并在每次请求时重用它。

我认为这没有其他选择。 您必须建立http连接才能获取URL的状态。

以下2是Java的轻量级替代品

  • Unix curl实用程序
  • 来自Java脚本的Ajax调用

假设我们要在EXPIRY_TIME之后删除客户端的数据。

我认为可以采用以下两种方法之一:

  1. 您可以在会话修改时间(建议最后访问时间)中检查某些cron作业(调度程序)
  2. 对于每个客户端请求,在平面文件系统中设置访问日志,并在访问日志中检查cron作业

在任何情况下,如果上次访问时间> EXPIRY_TIME,则删除客户端的数据。

这种方法将节省往返行程,并有助于减少流量。

作业完成后,您可以释放连接。无论如何,java webserver都设计为可以处理多个请求。即使每5秒有一个请求到达服务器,这也不成问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM