Centrifugo adalah real-time messaging server yang mudah di scaling dan bisa digunakan oleh bahasa pemrograman apa saja. Bisa digunakan dengan berbagai sistem operasi seperti Linux, Windows dan MacOS.
Dari hasil benchmark 1 server dengan spesifikasi (1 CPU, 1 GB memory) di Linode bisa menghandle 13.000 user.
Install dependency
yum install tar wget -y
Buat User Centrifugo
Untuk menjalankan service centrifugo kita akan membuat user baru dengan nama centrifugo
, file konfigurasi centrifugo akan diletakkan di folder /etc/centrifugo
mkdir /etc/centrifugo useradd --system -U -M centrifugo -s /bin/false -d /etc/centrifugo
Install Centrifugo
Download versi terbaru dari halaman rilis
wget https://github.com/centrifugal/centrifugo/releases/download/v2.6.0/centrifugo_2.6.0_linux_amd64.tar.gz
ekstrak file tersebut
tar zxvf centrifugo_2.6.0_linux_amd64.tar.gz
Copy file centrifugo ke /usr/bin
cp centrifugo /usr/bin/
Generate konfigurasi centrifugo
cd /etc/centrifugo centrifugo genconfig
file baru config.json
baru akan dibuat, contoh isi file tersebut
{ "v3_use_offset": true, "token_hmac_secret_key": "09f95a10-72d3-4004-b9c3-58a18bd33607", "admin_password": "26d8b652-c5d0-4cc3-be04-d6e14a263bfa", "admin_secret": "f624aaab-4211-435c-8d38-bdbc5b8c237f", "api_key": "c5bfdd7a-bcac-4720-86d2-ec9c0efc405a", "admin": true }
tambahkan "admin": true
dibagian paling bawah, agar kita bisa mengakses UI untuk admin.
Service systemd centrifugo
Untuk menjalankan centrifugo kita akan menggunakan systemd, agar bisa berjalan otomatis setelah reboot, ataupun otomatis restart begitu servicesnya mati.
cat >/lib/systemd/system/centrifugo.service <<'EOL' [Unit] Description=Centrifugo services After=network.target syslog.target [Service] User=centrifugo Group=centrifugo LimitNOFILE=55555 Environment="CONFIG=/etc/centrifugo/config.json" ExecStartPre=/usr/bin/centrifugo checkconfig -c $CONFIG ExecStart=/usr/bin/centrifugo -c $CONFIG ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -SIGTERM $MAINPID TimeoutStopSec=10 KillMode=control-group RestartSec=1 Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=centrifugo [Install] WantedBy=multi-user.target Alias=centrifugo.service EOL
reload systemd
systemctl daemon-reload
jalankan service centrifugo
systemctl enable centrifugo
systemctl start centrifugo
Buka firewall
Buka port 8000 (port standart centrifugo), di Firewall
firewall-cmd --zone=public --add-port=8000/tcp --permanent
reload firewall
firewall-cmd --reload
Buka Web Admin Centrifugo
Buka http://IP-SERVER:8000
di browser
gunakan password yang digenerate diatas contoh 26d8b652-c5d0-4cc3-be04-d6e14a263bfa
Contoh Penggunaan
Agar bisa terhubung dengan websocket centrifugo, buat token untuk user di server dengan menjalankan
cd /etc/centrifugo centrifugo gentoken # output HMAC SHA-256 JWT for anonymous user with expiration TTL 168h0m0s: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTU5Mzk5Mzh9.SCChetJdsjK836PksN2RsllwnF5sSHSVX83DHAIOrgU
buat file centrifugo-testing.html
yang berisi
<html> <head> <title>Centrifugo - Jaranguda.com</title> </head> <body> <script src="https://cdn.jsdelivr.net/gh/centrifugal/centrifuge-js@2.6.4/dist/centrifuge.min.js"></script> <script type="text/javascript"> const centrifuge = new Centrifuge("ws://IP-SERVER:8000/connection/websocket"); centrifuge.setToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTU5Mzk5Mzh9.SCChetJdsjK836PksN2RsllwnF5sSHSVX83DHAIOrgU"); centrifuge.on('connect', function(ctx) { console.log("connected", ctx); }); centrifuge.on('disconnect', function(ctx) { console.log("disconnected", ctx); }); centrifuge.connect(); </script> </body> </html>
ganti IP-SERVER menjadi IP server anda dan setToken hasil dari generate token. Buka centrifugo-testing.html
di browser sekarang lihat admin centrifugo sudah muncul Users 1