Upgrade online game client on iOS when protocols have changed - mobile

We are currently running an online game on iOS, and recently we made some changes both on the client and on the server, which leads to some protocol changes. We realized that if we submit the app to App Store to do the approval, they should connect to our new server. So we should deploy our new server for them to test. However, if we deploy our new server, all the players currently playing our game cannot connect to our server until the app pass the test.
How is this kind of problem usually be solved?

You'll have this problem at one time or another anyway, since you probably cannot expect everyone to immediately upgrade to the new version once it is released.
You could solve this by creating a new endpoint at the server for the new version of the game, still keeping the old one around for those that have the older version of the game.

Related

1st - How does Heroku interact with a database (sqlite) 2nd - How can I obtain the version of database that is on Heroku?

I had a very hard time trying to find solutions to this problem online, probably because I do not know how to phrase this weird problem. I also could not reach out to Heroku as their support team only serves paid customers. I would really appreciate help from anyone.
Some context:
I have recently started experimenting with Heroku and deployed my first web app (Python, Flask, SQLite3) via GitHub. It works as intended, I am even able to interact with my database (add/delete/update). However, after making an update to my code locally and pushing it to GitHub, I realised that when my web app got built again by Heroku with the updates, the changes I made to the SQLite database is reverted back the initial, local version. (aka I lost the updates I made during testing).
So here comes the first question:
How does Heroku actually interact with the database? Does it create a copy of all my code from GitHub and runs it locally on their servers? (Since no changes to the database are reflected in my GitHub Repo despite successful updates to the database values through the web app).
And if so, this is the second question:
Is there any way for me to get this "updated version" of my database from Heroku side so I can download it locally before I make and push any updates to my code, so as not to erase all the updates to the database that a user might have made through the web app?

New Relic Browser Proxy Support

I have an application written using reactJS, and NodeJS. The application is deployed securely on the cloud. Recently, I am trying to integrate new relic with every component of my application. I successfully integrated it with the NodeJS backend.
Nonetheless, I have a problem with the browser agent. As a matter of fact, the problem is as follows: I would like New Relic Browser to, instead of communicating directly with the New Relic SaaS platform directly, to pass through a proxy server that I set up. This is done for IP whitelisting issues.
The question is: is it possible to configure the New Relic Browser agent to pass hit my proxy servers, rather than hitting the New Relic servers directly? IF yes, how can I do so?
You can set up proxy details in the Node.JS setup file.
There is documentation with all parameters that can be set up, please review it:
https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration
Can you also clarify how is your Browser agent setup, there is a couple of ways that it can be set up, please see the docs below:
https://docs.newrelic.com/docs/browser/browser-monitoring/installation/install-browser-monitoring-agent
So you may play around with node.js settings, that should work.
Also, you may bring this question to New Relic Explorers Hub
Hope this will be of some use to you.

What are possible solutions in using Offline First Sync with MongoDB and alternative to PouchDB/CouchDB?

I would like to ask if you have alternatives into using Pouch/Couch db into developing offline first apps that syncs automatically with MongoDb. My current issue is that Pouch/Couch seems to have the trend going down and looking forward to the future seems like it will die soon. Clients are on and off the internet so I need to create an offline first app that syncs later on when connection is established.

GCloud App Engine old instances still running

We've build few services on Google App Engine, we've ship them into production and everything worked as expected. But now I have little issue with one of my integration service which runs on flexible environment. I've deployed serveral times new version and maybe some of deploys wasn't successfully finshed or something like that. Now I see in Stack Driver logging some error logs from running instances of some old version (by version id in "resource" property). It made me few problems with with some version "missmatch" in integration tasks. I don't see this old versions in GC CLI SDK or in web dashboard. I've tried to delete whole service and redeploy it, but after first deploy, there are still new log entries in Stack Driver. I've changed DB credentials to prevent older versions to make mess in DB ¯_(ツ)_/¯. Production environment now runs OK, but there are still some old services spamming logging with errors about DB auth. I cant find this old versioned instances anywhere except this new log entries. Is it normal behaviour? Do you have some tips?

How do I separate the RPC client and server so that the server runs on app engine and the client runs on my computer?

I'm very new to all this, so please bear with me. I just completed this tutorial on RPC in GWT. In the tutorial, you create a stockwatcher application that displays stock information. The application gets data from a server using RPC. I deployed the project to app engine and it works great.
Now I would like a separate, normal java project that runs on my computer and displays stocks that it retrieves from the app engine server using rpc. In the stockwatcher tutorial, there is a client and server package. I refactored the client package into a new project to start. I understand that I need to give it the appropriate url, but I'm not sure how to do that. The StockPriceService has the annotation #RemoteServiceRelativePath("stockPrices") so my first thought was to somehow change that to the correct app engine url. Is there an annotation that allows me to put in the entire url? If someone could point me in the direction of a tutorial that deals with this, I would greatly appreciate it.
THANK YOU!!! :)
Edit
I'm trying to make a client that will run on my computer, another client that will run on my phone, and a simple app engine server that will store some data. After doing the RPC tutorial, using RPCs seemed like a good way for me to send and receive data. I just don't know how to setup the RPC service across multiple projects.
Edit 2
I just saw this so I guess what I want to do isn't possible. I guess my new question is, what's the best way to send and receive data between app engine and a non-gwt project?
Pls see the following links
https://developers.google.com/appengine/docs/java/gettingstarted/
https://developers.google.com/web-toolkit/doc/1.6/tutorial/appengine
An appengine project will run your machine, you can really deploy it, but you need an account.

Resources