Saat ini saya berencana untuk membuat proyek permainan kartu di mana klien akan berkomunikasi dengan server secara turn-based dan sinkron menggunakan pesan yang dikirim melalui soket. Masalah yang saya miliki adalah bagaimana menangani skenario berikut:
(Klien mengubahnya dan mengirimkan aksinya ke server)
Klien mengirim pesan yang memberi tahu server langkahnya untuk belokan (mis. Memainkan kartu 5 dari tangannya yang perlu diletakkan di atas meja)
Server menerima pesan dan memperbarui status permainan (server akan menampung semua status permainan).
Server beralih melalui daftar klien yang terhubung dan mengirim pesan untuk memberi tahu mereka perubahan status
Klien menyegarkan semua untuk menampilkan negara
Ini semua didasarkan pada penggunaan TCP, dan melihatnya sekarang sepertinya sedikit seperti pola Pengamat. Alasan mengapa hal ini menjadi masalah bagi saya adalah pesan ini sepertinya tidak point-to-point seperti yang lain karena saya ingin mengirimnya ke semua klien, dan sepertinya tidak efisien mengirim pesan yang sama di seperti itu.
Saya sedang berpikir tentang menggunakan multicasting dengan UDP karena saya bisa mengirim pesan ke semua klien, tetapi tidakkah ini berarti bahwa klien secara teori akan dapat saling mengirim pesan? Tentu saja ada aspek sinkron, meskipun ini bisa diletakkan di atas UDP, saya kira.
Pada dasarnya, saya ingin tahu apa yang akan menjadi praktik yang baik karena proyek ini benar-benar semua tentang pembelajaran, dan meskipun itu tidak akan cukup besar untuk menghadapi masalah kinerja dari ini, saya ingin mempertimbangkannya juga.
Namun, harap dicatat saya tidak tertarik menggunakan middleware berorientasi pesan sebagai solusi (saya punya pengalaman menggunakan MOM dan saya tertarik mempertimbangkan opsi lain selain MOM jika soket TCP adalah ide yang buruk!).