Got plenty accomplished today.
The quick version, we’re now just serving HTTP on the stack, using ACM + ALB and offloading the HTTPS to ALB.
Well, what in the tarnation does that mean?
ACM means Amazon Certificate Manager. ALB means Amazon Load Balancer.
Basically, we have our demo address, https://demo.qxrstudios.app, which lives in the real internet, and we have our stacks, which live on Amazon’s internet. Our stacks can also live on the real internet, but it’s easier to abstract them away.
So now, when you go to the https://demo.qxrstudios.app (well not right now, I’ve shut it down for the night) with a HTTPS request you hit a CNAME DNS redirect (invisible) that takes you to the Amazon Load Balancer which directs you to one of X instances of the demo (in our case, one instance, I’m paying for one instance right now, you have to pay for each of these). So as more people connect, you can easily spin up more instances and take on the extra load and it’s invisible.
Amazon also looks after the certificate authentication for the SSL, securing our connection at the the load balancer, which then directs everything to our stack (also called an instance, mostly called an instance, I’m changing terminology on you all sorry) on port 80 but it’s all cool HTTPS stuff.
Is it rocket science? No. But it’s really clever and I’m really glad AWS exists even if it’s not the easiest thing to use, it’s there and it works. It is a pain that Amazon doesn’t support the .app domain name, there’s a hilarious support thread going back three years on the AWS forums about that. We almost switched to qxrstudios.link (which we also now own) to get around that until I figured out the DNS fu to use the Google DNS stuff (actually, I just found the AWS support page on using Google DNS with AWS, which you have to Google, because I don’t see it linked from anywhere).
I fixed the sound. I fixed the music. I fixed the spinning up and down. I fixed Safari, Edge, Firefox and Chrome.
The latency to AWS is about 10ms, I can turn on another Amazon feature to make our instances replicate worldwide, but we’ll save that for another day.
Is there a bug? Heck yes. Websockets disconnects the user after about 60 seconds with an error 1006. That error is the error that doesn’t have an explanation since it’s to do with security and they don’t want hackers knowing what happened. How am I going to fix that? I’m going to try a different socket library that gives me better errors and hopefully doesn’t do that. Scorched earth approach.
There is one more bug that I’ve managed to crash the Unreal executable running on the stack more than once (it does restart, it just disconnects and you can reconnect). It would be awesome if it would do that to my home server when I test on that since that’s the only one with a debugger attached.
Oh, and I need to fix cameras on phones. I don’t rotate them. So try the demo on your desktop tomorrow not your phone.
Apologies for the ramble.