Real-time mobile multiplayer online game [closed] - ruby-on-rails

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I have been given a task to develop server architecture a multiplayer online game (for android and iOS). Game will involve messaging interaction between player (not too much data will be sent, but it will be frequent).
After exploring the internet, web-sockets and XMPP server seems to be the available option for me. And I am a little bended towards Web Sockets and basically I am a Ruby on Rails developer (available option for me is faye).
And after digging a little more, I am came across Socket.IO used in NodeJS. It looks good, but I am a little worried about the scalability. We are expecting a huge traffic in future, so I am not sure whether NodeJS can handle such traffic or not.
What do you guys suggest, Web Sockets (if yes, then what the best option for me) or XMPP servers ?

If you are a Rails developer and feeling comfortable using web technologies then you should definitely use WebSockets.
XMPP is great but handling XMPP with Ruby is hard and you need to learn XMPP first. Also most of the XMPP servers are written in Erlang.
For websocket on a Rails app your best choice is websocket-rails. It's built on top of Faye and Eventmachine and pretty fast. We are currently using it for a realtime chat app that has nearly 1k connections and still has a lot of room to grow.
Btw if you gonna use websocket-rails Thin web server plays really nice with it. You can create a cluster and scale linearly.

Related

Possibility of an ios chatting app using alamofire and a backend server [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
I'm fairly new to ios app development and came across an idea for an app that involves chatting. The flow of the app is fairly simple as it involves simple login and profile creation. As a lot of my experience comes from web development, I was planning on creating a backend server using node that communicates with the client-side (which will be written in swift), taking the core ideas from this [tutorial][1].
Not strictly related, but if you don't mind changing plans a bit, as an iOS beginner dev using Swift and Firebase looks the easiest solution to me. I've seen many tutorials about the realization of a Chat App and although most them, paid and free, are just not good enough even as a starting project, i found this to be pretty good quality wise, let's say in the ~30 hours of tutorial 50% of the work for a basic Chat App is already done.

What frameworks / technologies to use in web applications for Real Time features? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
What do you recommend (or not) to use for Real Time features (like chats or auctions) in web applications?
The most important for me is your opinion or benchmarks about the efficiency / performance / speed of specific frameworks, technologies and solutions.
For example:
Ruby on Rails + ActionCable
Phoenix + Elixir
Socket.io
QUESTION'S CONTEXT:
Each framework, programming language, technology has some advantages and disadvantages which make it more or less effective for Real Time needs. Sometimes we can use multiple technologies to build app's backend, for example when backend is a set of cooperating services (SOA, micorservices, etc.). Due to both, we are able create some features in Ruby on Rails (because the implementation is fast) and other in Java (beacuse it works fast).
If I would be on your side, I would follow Elixir & Phoenix path.
Elixir is basically Erlang with better syntax and it's open for extensions via macros, so you can customize it whatever you want.
Please take a look on these great articles about that:
The road to 2 million websocket connections
Phoenix Channels vs Rails Action Cable
Basically:
Elixir was created to do handle such scenarios with grace, efficiency, low latency, great scalability and fun.
Ps. Please remember that the time of the compilation is not that important as time of handling the request / getting the response / handling multiple websocket connections.
Elixir is not the fasters language, but it leverages concurrency and it's unique in terms of responsiveness.

How IoT (Internet of things) can work in case you have poor internet connectivity or no connectivity? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
This question pops up in my mind as in many developing countries at present internet connectivity is very poor or no connectivity at all and the customer base is very huge, in this case how IoT can help in making life easy?
There are currently a few projects going on whose purpose is to provide an affordable Internet access for people in poor areas:
https://en.wikipedia.org/wiki/Project_Loon
https://en.wikipedia.org/wiki/Internet.org
https://en.wikipedia.org/wiki/Outernet
There are also technologies such Wi-Fi Direct that do not require presence of a centralized servers.
Lastly, as others said, IoT developers will have to deal with lack of connectivity and design their software accordingly.
You could even go a step further, many machine-to-machine solutions will have incredibly low bandwidth. (Take for example LoraWan which would be extremely suitable to roll out in developing countries).
So, being in a developing country or not, you are stuck with networks and devices that have to deal with low bandwidth anyway. This means that the developers creating the software for your devices need to think very well about how they solve certain type of problems.
A lot of devices currently also have to deal with situations where there is no connectivity at all. For example a tracking device in a container on a ship.
This device should be built in a way, that it will function without a proper internet connection.
Conclusion:
IoT devices can work with low bandwidth connections.
Development should be done with the idea of non-connectivity in mind.

Alternatives to Parse for a Social App? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I recently delved into app development on Xcode, and decided to develop a social app. I was using Parse as my mbaaS for a while, but unfortunately they are closing down. I was wondering in your experience what is(are) the best alternatives to Parse. Im basically using looking for something
1) easy to use
2) Well documented
3) Lots of tutorials
4) Can handle lots of RPS and users.
The app I am developing is a social app, so if you have any specific recommendation for an app of that type, that would help tremendously. Also it is important to note that I have no backend development experience, so it would be a challenge to develop my own.
Thanks again
There are several Parse alternatives out there right now:
AWS Mobile Hub - this is a direct Parse replacement that recently came out by AWS. Although this is in Beta, AWS is a well respected platform that supports many huge companies like Netflix and Yelp
Firebase - (acquired by Google) Firebase offers a great solution for real time communication and data storage. It's perfect if what you are doing is mainly data & realtime (chat, game, collaboration, etc...) but it's not very flexible for other things (e.g. payment, SMS, push notifications etc...) firebase.com
RapidAPI - a backend platform that allows for saving data and integrating APIs. It is based on blocks so each basic action is represented by a block. You can combine blocks to create logic. It has a bit of a higher learning curve but it's probably more flexible
BackAnd - a platforms that allows you to create an AngularJS ready backend for your app. Its really good of you are working on AngularJS web apps and your data is stored on Amazon RDS.
Baasbox is a good alternative to Parse. A lot of features used in Parse are there (Push messaging etc), so migrating an app is relatively straightforward. They provide an API for Android, iOS and Javascript.
One of the main advantages it has over Parse is that it can be hosted yourself (Although there is a hosted option available, but it's not free).
http://www.baasbox.com
Out of all the available backends, we found this to be most similar to Parse.

What do you think of an AWS based architecture [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I was reading through this article:
http://aws.typepad.com/aws/2008/12/running-everything-on-aws-soocialcom.html
And I was wondering if this was good or bad. I am a fan of AWS myself, but I what to hear what the crowd thinks...
There is everything perfect in the Elastic World besides reliability. Obviously, the reliability and quality of service is dependent on the service provider and if the service provider is down you don't have anything to fallback on. I am a big proponent of AWS, but with the last two outages, I am now designing fallback on local data center servers in case of outages.
One of the main design decisions when designing a solution in AWS is to expect services to fail and implement mechanism to recover and if you need HA, then implement redundancy. Don't assume all the services to be reliable (Unless otherwise stated that they implement redundancy internally). Most of these problems are solved if you are using managed services such as Lambda, API Gateway, S3, Dynamodb & etc but if you are using services like EC2, then you have to design for HA, for example for EC2 using auto scaling and load balancing.
If you are interested to learn more refer AWS Well-Architecture Framework Whitepaper.

Resources