当前位置: 首页 > 知识库问答 >
问题:

GCM超时&发送5000个推送通知后拒绝连接

颜奇希
2023-03-14

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

在线程中运行的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();
    }

异常:连接被拒绝

异常:与https://android.googleapis.com的连接在org.apache.http.impl.conn.DefaultClientConnectionOperator.OpenConnection(DefaultClientConnectionOperator.java:190)在org.apache.http.impl.conn.ManagedClientConnectionImpl.Open(ManagedClientConnectionImpl.294)在org.apache.http.impl.client.DefaultRequestDirector.TryConnect(DefaultRequestDirector.java:643)在java.util.concurrent.FutureTask.Run(FutureTask.java:266)在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:连接超时:connect at java.net.DualStackPlainsockeTimpl.Connect0(本机方法)at java.net.DualStackPlainsockeTimpl.connect(dualStackPlainsockeTimpl.java:79)at java.net.AbstractPlainsockeTimpl.doConnect(AbstractPlainsockeTimpl.java:350)at java.net.AbstractPlainsockeTimpl.ConnectToAddress(

共有1个答案

陶刚豪
2023-03-14

当您体验err_connection_refired时,请检查您的internet连接、检查任何电缆并重新启动您可能使用的任何路由器、调制解调器或其他网络设备。该错误主要是由于internet连接中的问题以及如果您用于连接internet的设备存在问题而发生的。按照此链接中的步骤解决此问题。

基于此线程,公司网络中可能会出现许多问题,因为防火墙可能会阻止对异常端口的访问,或者代理可能会干扰任何传出流量。该异常表示您的网络有问题--只是超时而已。我猜谷歌和你的供应商都不是这里的问题。检查您的设置和您与外部Internet之间的任何防火墙(公司或个人)。

 类似资料:
  • 问题内容: 我正在关注http://javapapers.com/android/google-cloud-messaging-gcm-for-android- and-push-notifications/ 吗?通过GCM发送推送通知。一切正常,但是,我只能将推送通知发送到一台设备。注册另一台设备将替换先前设备的注册ID。我在http://javapapers.com/android/andro

  • 我正在尝试使用GCM推送通知。我的设备已注册到服务器,并且我还创建了设备注册id。但当我试图从服务器发送消息时,消息不会到达已注册的设备。谁能帮帮我吗? 我的主要activity 软件包COM.ATI.GCM; 导入com.google.android.gcm.gcmRegistratar; 导入Android.os.AsyncTask; 导入Android.os.bundle; 导入androi

  • 这是舱单 这是我的注册令牌类 这是我的Firebase服务类

  • 如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star

  • 我有一个包含用户名数据库的服务器。我还有一个Android应用程序,用户可以在服务器数据库中注册自己的用户名,也可以在服务器的GCM部分注册设备。 我目前正在服务器代码中使用GCM演示,它将多播一个推送通知到每个注册的设备。但是,我希望它能够将推送通知发送给某些用户,而不是每个注册的GCM设备。 我的第一个想法是将数据库中的每个用户与其GCM注册表关联起来。这样行吗?我读过一些关于regID更改或