Komunikasi Klien Server berdasarkan protokol Socket.IO
Sisi Klien * : | Sisi server: |
---|---|
HTML, CSS, JS (termasuk kerangka SocketIO) | Kerangka kerja Python: Flask, Flask SocketIO |
* Elemen front-end papan Tic Tac Toe terinspirasi dari proyek Tic Tac Toe Sederhana Dev Web - fungsionalitas satu sisi 2 pemain
Dalam game Tic-Tac-Toe Multipemain Online , pemrosesan gerakan, penanganan koneksi pemain, obrolan pemain, dan manajemen ruang permainan disediakan oleh server (dalam hal ini dengan bantuan kerangka kerja Flask, Flask SocketIO). Sesuai aturan tic tac toe, hanya ada dua pemain dalam satu permainan. Artinya server harus memeriksa keberadaan ruang permainan dan apakah sudah ada dua pemain sebelum menghubungkan yang baru.
Langkah 1 - Koneksi
Langkah 2 - Pemain diberitahu
Langkah 3 - mulaiPermainan
app.py
File tempat semua kesenangan dimulai... Berikut adalah konfigurasi framework Flask dan Flask Socket IO. Setelah dikonfigurasi, rute Flask dihiasi dengan @app.route()
dan handler Flask SocketIO dihiasi dengan @socketio.event
. Di bagian bawah file, ada socketio.run(app, debug=True)
yang akan memulai server. "Fungsi socketio.run()
merangkum permulaan server web dan menggantikan permulaan server pengembangan Flask standar app.run()
." Soket LabuIO
oophelpers.py
Ada pemodelan objek Player()
dan GameRoom()
. Di dalam dirinya sendiri, kelas mendefinisikan perilaku dan atribut yang dibutuhkan.
templates/
Pada dasarnya, templates/index.html
hanyalah halaman HTML yang mendeskripsikan konten halaman - permainan papan dan area log. Di atas halaman ada "Tampilan salam" sebagai tampilan modal yang akan mengubah status: display: show
-> display: none
ketika acara server memancarkan ketersediaan ruangan.
static/styles/
Disitulah letak file CSS yang digunakan untuk menggambarkan estetika halaman.
static/scripts/
Dalam file main.js
terdapat skrip yang memungkinkan interaksi aplikasi web. File dimulai dengan " DEKLARASI VARIABEL " di bagian atas, kemudian pada fungsi anonim joinButton
addEventListener
diverifikasi roomAvailability()
melalui fungsi async
& await
. Setelah ketersediaan ruangan dikonfirmasi, userConnectedHandlers()
dipanggil. Fungsi obrolan dan permainan disediakan di seluruh EventListener yang dilampirkan pada tombol sendButton , startGameButton , restartButton .
requirements.txt
File itu hanya menentukan paket dependensi untuk aplikasi web ini.
Salah satu cara untuk menjalankan aplikasi ini:
python -m venv [directory]
pip install -r requirements.txt
python app.py
atau flask run
dan kunjungi http://localhost:5000
di dua tab browser terpisah. python app.py
atau
flask run
Bangun Gambar dari Dockerfile
docker build -t < img_name > .
docker build -t flask-tictactoe .
Jalankan kontainer di latar belakang dan publikasikan port kontainer ke host
docker run -d -p < host_port > : < container_port > < image_name >
docker run -d -p 80:5000 flask-tictactoe
Akses wadah di browser menggunakan: http://localhost
atau http://127.0.0.1