2016-06-10 68 views
1

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

POST请求的线程乳宁

 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:连接到 https://android.googleapis.com拒绝在 org.apache.http.impl.conn.DefaultClientConnection Operator.openConnection(DefaultClientConnectionOperator.java:190) 在 org.apache.http.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: (AbstractHttpClient.exe)。的java:784) 在 com.mpsdevelopment.push.threads.SenderThread.sent(SenderThread.java:100) 在 com.mpsdevelopment.push.threads.SenderThread.run(SenderThread.java:76) 在 的java .util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java :1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)

连接超时

所致:java.net.ConnectException:连接超时:在java.net.DualStackPlainSocketImpl.connect0(本机方法)在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl连接 。的java:79) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl .java:188) at ja va.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 org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:414) at org.apache.http.impl.conn.DefaultClientConnectionOperator .openConnection(DefaultClientConnectionOperator。Java的:180) ...... 13多个

回答

0

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

根据此thread,企业网络中可能会出现许多问题,因为防火墙可能会阻止访问相当不寻常的端口,或者代理可能会干扰任何传出流量。异常表明您的网络问题 - 只是暂停。我猜想Google和你的提供商都不是这里的问题。检查您的设置以及您和外部互联网之间的任何防火墙(公司或个人)。