Hubungi dukungan

Kami membalas melalui e-mail, biasanya dalam dua hari.

Google reCAPTCHA memeriksa kiriman ini untuk mencegah penyalahgunaan; data dikirim ke Google. Skrip hanya dimuat saat formulir ini dibuka.

← Semua artikel

Daftar siapa yang online, dijanjikan pada 2012 dan kini tersedia

Pada 25 Agustus 2012, sebuah tulisan di blog ini mengumumkan bahwa kolom-kolom statistik mulai diperbarui dengan sendirinya, dan ditutup dengan sebuah kalimat: “Fitur yang direncanakan, daftar ‘Siapa yang sedang online’, akan segera hadir!”

Tulisan itu masih ada di sini. Daftar yang diumumkannya butuh empat belas tahun untuk terwujud. Kini daftar itu sudah ada, dan penghitung yang ditautkan dalam tulisan itu terus berjalan sepanjang waktu.

Apa yang ditampilkannya

Halaman statistik memiliki panel langsung: berapa orang yang sedang berada di situs saat ini, dan daftar yang terbaru di antara mereka — negara asal koneksinya, kotanya jika diketahui, halaman yang sedang dibukanya, dan kapan terakhir kali terlihat. Dua belas sekaligus, yang terbaru di atas.

“Saat ini” berarti lima menit terakhir. Setelah satu jam, baris-barisnya dihapus seluruhnya.

0560di daftar langsungbaris masih disimpandihapusmenit sejak terakhir terlihat

Apa yang tidak dimaksud dengan “siapa”

Tidak ada seorang pun dalam daftar itu yang teridentifikasi. Daftar itu dibentuk dari hash harian 16 byte yang sama seperti yang dijelaskan dalam tulisan tentang menghitung tanpa cookie — tidak ada nama, tidak ada akun, tidak ada cookie, dan tidak ada alamat IP yang disimpan di balik satu baris pun.

Daftar itu juga hanya menyimpan jalur halaman, bukan alamat lengkapnya: /shop/boots, bukan tautan lengkap beserta apa pun yang ditambahkan mesin pencari atau buletin di ujungnya.

Dan dua orang dari kota yang sama yang melihat halaman yang sama hanyalah dua baris. Tidak ada bagian sistem yang dapat membedakan dua pembaca dari satu pembaca yang memakai ponsel dan laptop. Itu bukan kelalaian yang menunggu dirapikan di versi berikutnya. Itulah rancangannya, dan itu adalah kompromi yang sama yang dibuat penghitung di semua tempat lain: cukup untuk berguna, tetapi tidak cukup untuk membuntuti siapa pun.

Langsung tanpa membiarkan koneksi tetap terbuka

Cara modern untuk membangun ini adalah WebSocket, atau server-sent events — browser membiarkan satu koneksi tetap terbuka dan server mengirimkan pembaruan melalui koneksi itu saat terjadi. Itu jawaban yang elegan, tetapi di sini justru jawaban yang salah.

Server web situs ini memakai satu proses untuk setiap koneksi yang terbuka, dan tugas utamanya adalah menjawab permintaan penghitung untuk beberapa ribu situs web. Koneksi yang dibiarkan terbuka adalah proses yang tidak bisa melayani siapa pun lagi. Lima puluh orang yang memantau halaman langsungnya berarti lima puluh proses yang menganggur, menunggu untuk mengirimkan angka yang berubah setiap beberapa menit.

Karena itu, halamanlah yang bertanya, setiap lima belas detik, dan mengambil sepotong kecil JSON. Di sekitarnya ada tiga keputusan yang lebih penting daripada intervalnya:

  • Jika permintaan mulai gagal, halaman mundur menjadi sekali per menit — alih-alih terus menggempur server yang jelas-jelas sedang kesulitan.
  • Di tab latar belakang, halaman berhenti bertanya sama sekali, dan langsung diperbarui begitu tab kembali ke depan. Tidak ada yang melihat tab yang tersembunyi, padahal permintaannya akan memakan biaya yang persis sama dengan permintaan yang berguna.
  • Baris diperbarui N detik yang lalu menghitung naik secara lokal, sekali per detik, dan tidak memakan biaya apa pun. Permintaan hanya diperlukan untuk mengubah data, bukan untuk menambah usianya.

Tidak ada yang cerdik dari semua ini. Semuanya proporsional, dan pada server kecil, itulah sifat yang lebih berharga di antara keduanya. Tampilan langsung tidak boleh lebih mahal dijalankan daripada hal yang dipantaunya.

Satu bagian yang tidak kembali

Pada September 2015 ada sebuah tulisan tentang tab Pengguna yang mulai bisa membedakan orang yang sedang aktif membaca halaman dari orang yang membukanya di tab latar belakang lalu melupakannya.

Pembedaan itu belum kembali. Daftar saat ini tahu kapan seorang pengunjung terakhir terlihat; daftar itu tidak tahu apakah pengunjung tersebut sedang melihat. Hal itu benar-benar layak diketahui — cukup banyak “pengunjung” di situs mana pun sebenarnya hanyalah tab yang ditinggalkan — jadi fitur itu ada dalam daftar hal yang akan dibangun.

Semoga tidak butuh empat belas tahun lagi.

Cobalah

Tulisan tahun 2012 itu diakhiri dengan tautan ke sebuah contoh langsung, dan tampaknya itu juga cara yang tepat untuk mengakhiri tulisan ini. Omong-omong, tautan asli itu masih berfungsi: penghitung di baliknya terus berjalan sepanjang waktu dan telah melewati 1,3 juta kunjungan.

Ada contoh langsung di sini, tanpa perlu akun untuk melihatnya.

Iklan