Chat server yang akan kita buat pada tutorial ini bukan menggunakan protokol WebSocket melainkan hanya sebuah TCP server berbasis teks sederhana. Alasan menggunakan Ratchet tidak lain karena Ratchet menyediakan banyak abstraksi komponen yang dibangun diatas ReactPHP. Komponen dari Ratchet yang akan kita gunakan adalah Show
TCP Chat server yang akan kita buat harus memiliki beberapa fitur berikut.
Pada tutorial ini kita tidak membuat aplikasi pada sisi client karena chat server yang kita buat adalah sebuah TCP server berbasis teks sederhana maka tools seperti Telnet, Netcat atau sejenisnya dapat digunakan. Contoh saat aplikasi sedang dijalankan dapat dilihat pada video berikut ini. Chat Server dengan beberapa klien sedang terhubungApa yang DiperlukanSebelum memulai tutorial ini berikut ini adalah hal yang kamu perlukan agar dapat mengikuti.
Jika kamu sudah memiliki semua yang diperlukan mari kita mulai tutorial membuat Chat server dengan Ratchet PHP. Persiapan Struktur DirektoriAplikasi chat server yang akan kita buat memiliki struktur direktori sebagai berikut. - chat-server/ Pada contoh diatas kita menamakan direktori untuk aplikasi dengan nama
Menginstall Ratchet PHPLangkah berikutnya adalah menginstall Ratchet PHP. Kita akan menggunakan Composer untuk menginstalnya. Untuk itu kita perlu membuat file $ cd chat-server Tekan Ctrl+D atau Command+D untuk menyimpan. Kemudian lanjutkan dengan menginstall Ratchet. $ composer install -vvv Membuat Skeleton Chat ServerTujuan pembuatan skeleton ini adalah untuk memudahkan proses pembelajaran sebelum kode yang lebih lengkap dituliskan. Kita akan memanfaatkan komponen
Kita akan membuat dua file yaitu - chat-server/ Membuat Skeleton ChatServer.php ClassPastikan kamu berada pada direktori Pada skeleton kode diatas kita hanya mengimplementasi event Membuat Skeleton chat-server.php ScriptPastikan kamu berada pada direktori Ini adalah executable script yang digunakan untuk menjalankan server. Default port yang digunakan adalah 9191. Melakukan Test Awal pada Chat ServerSetelah kedua file berhasil kita buat saatnya untuk melakukan tes awal pada aplikasi chat server. Untuk menjalankan server kita akan mengeksekusi file $ cd chat-server Untuk koneksi client buka terminal window kemudian jalankan Telnet atau Netcat untuk melakukan koneksi ke chat server pada port 9191. $ nc localhost 9191 Dapat kita lihat begitu
client terhubung dengan server maka client akan mendapatkan pesan “Welcome to chat server!” yang telah didefinisikan pada method Chat server running on port 9191 Saya harap dengan kamu sudah mulai paham alur kerja TCP chat server yang akan kita buat. Melengkapi Pembuatan Chat ServerKali ini kita akan memodifikasi file-file yang kita buat sebelumnya untuk mengimplementasikan fitur yang sudah disebutkan pada awal tutorial ini. Interface yang kita gunakan hanyalah sebuah teks, sehingga interaksi client dengan server juga dilakukan dengan teks. Cara yang dapat kita lakukan adalah dengan menyediakan beberapa bentuk perintah yang dapat dieksekusi oleh client lewat command line interface (CLI). Ketika client terkoneksi ke Chat server ia akan disuguhkan daftar perintah yang dapat ia ketik pada terminal. Tampilannya adalah sebagai berikut. ************************************** Sebagian besar logic chat server ada pada event Melengkapi ChatServer.php ClassBuka kembali file Melengkapi chat-server ScriptKita juga akan melakukan perubahan pada script untuk menjalankan server. Dimana sekarang script menerima inputan untuk bind
address dan port number. Ubah file Menjalankan Chat ServerSaatnya melakukan test pada Chat server yang sudah kita lengkapi kodenya. Buka beberapa terminal window 1 untuk server dan beberapa lainnya untuk client agar kamu bisa melihat secara langsung interaksi antar user dalam chat room. $ php ./bin/chat-server.php Pada contoh diatas saya menjalankan chat server tanpa melakukan set parameter sehingga secara default server akan bind ke semua interface yaitu 0.0.0.0 dan port 9191. Berikutnya pada terminal window yang lain gunakan tools Telnet atau Netcat untuk terhubung ke chat server. $ nc localhost 9191 Mengubah NicknameJika kamu belum melakukan registrasi nickname maka kamu belum dapat mengirim pesan ke pengguna lain. Untuk mengubah nickname gunakan perintah /nick rioSUCCESS: Your nickname has changed to rio. Mengirim Pesan ke Semua PenggunaUntuk mengirim
pesan ke semua pengguna gunakan perintah /msg Hello there? Pada terminal window pengguna lain seharusnya akan tampil yang dikirimkan user >> User `rio` has joined channel.>> rio: Hello there? Melihat Siapa yang OnlineUntuk melihat siapa yang sedang online saat ini kamu dapat menggunakan perintah /usersCurrently we have 2 users online and 1 anonymous. Mengirim Private MessagePrivate Message adalah fitur untuk mengirim pesan yang hanya ditujukan kepada satu pengguna saja. Pesan ini tidak disebarkan kepada pengguna lain yang sedang online dichat room. Perintah yang digunakan adalah /pm rio Hi Rio, how are you? Pada terminal window milik user rio harusnya muncul pesan pribadi yang dikirimkan. >> PM from `john` -> Hi Rio, how are you? CatatanJika kamu ingin menjalankan chat server pada interface atau port lain gunakan environment variable seperti yang dicontohkan berikut ini. $ CHAT_BIND_ADDR=192.168.1.7 \ Pada contoh diatas server dijalankan pada alamat IP 192.168.1.7 dan port 8001. Source Code Chat ServerSource code dari chat server yang ditunjukkan pada tutorial kali ini dapat kamu temukan pada URL berikut. |