Jadi saya sedang menulis sistem perjodohan Catur berdasarkan pada tampilan Lobi dengan ruang permainan, obrolan umum dll. Sejauh ini saya memiliki prototipe yang berfungsi tetapi saya memiliki keraguan besar mengenai beberapa hal yang saya lakukan dengan server. Menulis server lobi permainan adalah pengalaman pemrograman baru bagi saya, jadi saya tidak memiliki model pemrograman yang jelas atau tepat untuk itu. Saya juga tidak dapat menemukan kertas yang menjelaskan bagaimana seharusnya bekerja. Saya memesan "Java Network Programming 3rd edition" dari Amazon dan masih menunggu pengiriman, mudah-mudahan saya akan menemukan beberapa contoh / informasi yang berguna dalam buku ini.
Sementara itu, saya ingin mengumpulkan pendapat Anda dan melihat bagaimana Anda akan menangani beberapa hal sehingga saya bisa belajar cara menulis server dengan benar. Berikut adalah beberapa pertanyaan dari kepala saya: (mungkin lebih banyak akan datang)
Pertama, mari kita tentukan apa yang dilakukan server. Fungsionalitas utamanya adalah untuk memegang koneksi TCP dengan klien, mendengarkan acara yang mereka hasilkan, dan mengirimkannya ke pemain lain. Tetapi apakah ada yang lebih dari itu?
Haruskah saya menggunakan satu utas per klien? Jika demikian, 300 klien = 300 utas. Bukankah itu terlalu berlebihan? Perangkat keras apa yang diperlukan untuk mendukungnya? Dan berapa banyak bandwidth yang dikonsumsi lobi maka kira-kira?
Jenis struktur data apa yang harus digunakan untuk memegang soket klien? Bagaimana Anda melindunginya dari modifikasi bersamaan (mis. Seorang pemain masuk atau ada lobi) ketika iterasi melalui itu untuk mengirim acara tanpa mengganggu throughput? Apakah ConcurrentHashMap jawaban yang benar di sini, atau ada beberapa teknik yang harus saya ketahui?
Ketika pengguna memasuki lobi, mekanisme apa yang akan Anda gunakan untuk mentransfer keadaan lobi kepadanya? Dan sementara ini terjadi, di mana peristiwa-peristiwa lainnya muncul?