[SARAN] Sepertinya pakai socket.io bakal lebih bagus daripada rest api
Closed this issue · 5 comments
Disclaimer: saya di sini gak berniat makar (beneran saya gk ada niatan makar sama sekali pak), saya cuma ngasih saran terkait teknologi untuk kemajuan peradaban umat manusia
Dari kode yang sudah ada, sepertinya akan banyak sekali terdapat API call:
- API call setiap X detik setiap usernya untuk fetch scorebioard (jika ada 1000 user, maka akan ada 1000 api call tiap X detiknya)
- API call setiap klik pakde, jika setiap user per detiknya bakalan klik sebanyak 10 kali, maka jika ada 1000 user maka bisa 10000 api call tiap detiknya (bisa dipastikan server meninggal)
Tujuan saya di sini cuma untuk ngasih saran lebih baik pakai socket.io dengan beberapa handling dengan tujuan mengurangi request per second biar servernya gak overhead.
Teknik yang saya sarankan:
- Menggunakan socket.io untuk data realtime seperti kasus ini sepertinya bakal lebih baik
- Kirim score ke server jangan tiap klik karena usernya pada barbar, lebih baik tiap X detik baru kirim data ke server, jadi bisa lebih ringan bebannya
- Simpan data ke database juga lebih baik ada interval tiap X detik biar load databasenya gak berat, jadi datanya secara temporary dihandle di memory dulu baru secara periodik simpen di database
- Broadcast scoreboard ke user juga dilakukan tiap X detik secara periodik
Cons/kekurangan socket.io:
- Gak tau sih ini konsumsi RAM nya segede apa karena tiap connection pasti disimpen di memori wkwkwk, coba tes sendiri aja
- Untuk server dgn processor kentang jg gk tau bsa handle berapa connection, tapi harusnya bsa lbh enteng daripada server dihajar api call dari user
Contoh kode mentahan:
- Server (Express JS): https://gist.github.com/irisan-kentang/9078b2046e34f46cdb49c2eb2fa42707
- Client (HTML biasa karena saya gak bisa ReactJS :v): https://gist.github.com/irisan-kentang/437f71d187e8d71bb7ac94651b309fbe
Semoga berfaedah.
Credit: orang random yang gabut pengen kontribusi aja
Update:
Saya sudah tes pake heroku yang free, ternyata dipake 5000 user secara bersamaan masih lancar jaya.
Cuma dari heroku sendiri batasannya max 6000 connections sama max 160 new connections/seconds :(
http://veldstra.org/2013/10/25/heroku-websocket-performance-test.html
Terima kasih atas sarannya gan
Untuk socket.io, mungkin belum bisa saya gunakan karena saya sendiri belum paham apa itu socket.io dan bagaimana cara pakainya. Saya nunggu pull request dari agan saja jika agan sudah mencoba mengimplementasikan socket.io ke POPOWI
mungkin nanti klo lagi selow saya coba pull req, btw ini repo backend nya yg mana ya?
mungkin nanti klo lagi selow saya coba pull req, btw ini repo backend nya yg mana ya?
Belum saya bikin gan reponya