tfkhdyt/popclick

[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:

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

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

Broadcast scoreboard ke user juga dilakukan tiap X detik secara periodik

Fixed