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
halaman login centrifugo
gunakan password yang digenerate diatas contoh 26d8b652-c5d0-4cc3-be04-d6e14a263bfa

halaman admin centrifugo

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

token jwt websocket

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

centrifugo client connected

Leave a comment

Your email address will not be published. Required fields are marked *