首页 文章

发送5000个推送通知后,GCM超时和连接被拒绝

提问于
浏览
2

我需要在gcm服务上每秒发送500个推送通知 . 不幸的是,与chrome49不同,我必须为每个chrome50客户加密消息,加密密钥在请求标头中指明 . 在发送了5000条以上的消息后,我收到了从https://android.googleapis.com/gcm/send拒绝的超时和连接,并且它停止工作了一段时间,然后定期正常工作

发布在线程中运行的请求

try {
        String path = "https://android.googleapis.com/gcm/send";
        URI uri = new URIBuilder()
                .setPath(path)
                .build();
        HttpPost httpPost = new HttpPost(uri);
        httpPost.addHeader("Accept", "application/json");
        httpPost.addHeader("Content-Encoding", "aesgcm");
        httpPost.addHeader("Cache-Control", "no-cache");
        httpPost.addHeader("Connection", "Keep-Alive");
        httpPost.addHeader("Content-Type", "application/json");
        httpPost.addHeader("Authorization", "key=" + appKey);
        httpPost.addHeader("Encryption", encryptionHeader);
        httpPost.addHeader("Crypto-Key", cryptoKeyHeader);
        httpPost.setEntity(new StringEntity(jsonFromData));
        HttpResponse response = client.execute(httpPost);
        HttpEntity entity = response.getEntity();
        String responseString = EntityUtils.toString(entity).replace("%", "@");
        LOGGER.info(responseString);
    } catch (Exception e) {
        e.printStackTrace();
    }

例外:连接被拒绝

org.apache.http.conn.HttpHostConnectException:在org.apache.http的org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)拒绝与https://android.googleapis.com的连接.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java:479)org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)com.mpsdevelopment.push.threads.SenderThread.sent(SenderThread.java:100)at com.mpsdevelopment.push.threads.SenderThread . 在java.util.concurrent.Executors上运行(SenderThread.java:76)$ RunnableAdapter.call(Executors.java:511)a java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java)中的java.util.concurrent.FutureTask.run(FutureTask.java:266) :617)at java.lang.Thread.run(Thread.java:745)

连接超时

引起:java.net.ConnectException:连接超时:连接java.net.DualStackPlainSocketImpl.connect0(本机方法)java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)at java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:350)java.net.AbstractPlainImpl.connectToAddress(AbstractPlainSocketImpl.java:206),java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188),java.net.PlainSocketImpl.connect(PlainSocketImpl.java: 172)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:589)at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)at at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:414)at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)... 13更多

1 回答

  • 0

    当您遇到 ERR_CONNECTION_REFUSED 时,请检查您的互联网连接,检查所有电缆并重新启动您可能正在使用的任何路由器,调制解调器或其他网络设备 . 该错误主要是由于互联网连接中的问题以及用于连接到互联网的设备存在问题 . 按照steps in this link解决此问题 .

    基于此thread,企业网络中可能会出现许多问题,因为防火墙可能阻止访问相当不寻常的端口或代理可能会干扰任何传出流量 . 该例外表明您的网络问题 - 它只是暂停 . 我想谷歌和你的提供商都不是问题所在 . 检查您和外部互联网之间的设置和任何防火墙(公司或个人) .

相关问题