Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google cloud messaging GCM through proxy

I am having trouble sending a message to a device through the company proxy.
I have done the GCM tutorial on the google site and have successfully registered a device on the google servers with the android emulator, and also on the server at my end.
For this I had to go through the company proxy, setting it in the access point of the emulator. Now the problem I have is sending a message from my server to the device through the same proxy. I am using the servlet code from the demo which uses the

com.google.android.gcm.server.Sender

helper class to send the message.

I am running the servlets on tomcat 7.

I have tried setting the proxy up in the catalina.properties file like so.

http.proxyHost=proxy.company.com  
http.proxyPort=8080

And I have tried setting properties inside the servlet itself like below.

System.setProperty("http.proxyHost", "proxy.company.com");  
System.setProperty("http.proxyPort", "8080"); 

But still I get the timeout. I know its the company proxy because I got the messaging working at home where I have no proxy.

I have seen a proxy object created in the java code and then a connection created with it, but I dont think that is usable here since I am using Sender helper class to send the message.

This is the line that fails in a timeout.

Result result = sender.send(message, registrationId, 5);

Any help would be appreciated.

Regards

Bill

like image 605
billby Avatar asked Jul 12 '12 02:07

billby


People also ask

Is FCM and GCM the same?

Firebase Cloud Messaging (FCM), formerly known as Google Cloud Messaging (GCM), is a cross-platform cloud solution for messages and notifications for Android, iOS, and web applications, which as of June 2022 can be used at no cost.

Is GCM deprecated?

Google Cloud Messaging (GCM) Deprecated by Google.

How do I convert GCM to FCM?

Migrate GCM project to FCMFrom the Firebase console, click Add Project. From the drop-down box, select your GCM project from the list of your existing Google Cloud projects. Click Add Firebase. From the Firebase welcome screen, select Add Firebase to your Android App.

When was GCM deprecated?

On April 10, 2018, Google deprecated GCM.


1 Answers

Alright, I finally have it working. In my comment I mentioned that I had succeeded in sending out the message, but the emulator was not recieving it. I had forgotten to follow my own earlier advice and run the emulator from the command line with the proxy parameters set like so:

emulator.exe -avd avd22google -http-proxy proxy.company.com:8080 -debug-proxy

So to summarise, my initial problem was that I had registered the emulator on the with GCM and with my local server, but the when I clicked send message I was getting a timeout.

I initially thought it was the firewall so I did some research and set up the proxy in tomcats catalina.properties file. This made no difference.

I used the "Charles" web proxy debugger software to see where the message was attempting to be sent to and it came up with https://android.googleapis.com:443

So I initially I added the following to my catalina.properties file:

https.proxyHost=proxy.company.com  
https.proxyPort=443

It still did not work. A colleague of mine told me that our company proxy handles all types of requests through port 8080, so I changed the the poort line to:

https.proxyPort=8080

This allowed the message to be sent out. But then the message was not getting through to the emulator and I was receiving the following error in LogCat.

[GTalkConnection.12] doConnect: caught XMPPError connecting to mtalk.google.com:5228.: -- caused by: java.net.SocketException: The operation timed out

Then I remembered that you need to start the emulator with the command line to get it to use the proxy. Once I did this a flood of messages appeared on my emulator!

So I finally have it working end to end. It's taken me about a week to get GCM fully working within my company firewall, so hopefully this post can help some other poor sod doing this in the future.

cheers

Bill

like image 199
billby Avatar answered Sep 20 '22 16:09

billby