Grappler adalah server minimalis untuk koneksi "komet" yang menampilkan API tunggal yang konsisten di semua transportasi. Grappler saat ini mendukung transport berikut (masing-masing dengan daftar browser yang didukung saat ini):
* - Implementasi XMLHttpRequest beberapa browser mengandung kebiasaan yang tidak terduga (misalnya browser web bawaan untuk Android 1.6)
Grappler mengekspor satu objek utama: Server
.
lib/common.js mengekspor objek LOG
dan STATE
, yang berisi konstanta yang digunakan saat mencatat pesan dan memeriksa status klien.
Objek LOG
adalah:
{
INFO: 1,
WARN: 2,
ERROR: 3
}
Objek STATE
adalah:
{
ACCEPTED: 1, // internal use only
TEMP: 2, // internal use only
PROTO_HTTP: 4, // client is HTTP-based
PROTO_WEBSOCKET: 8 // client is WebSocket-based
}
Membuat instance baru dari server grappler.
options
adalah objek dengan nilai default berikut:
{
// A callback for receiving "debug" information. It is called with two arguments: message and message level.
// Message level is one of the values in the `LOG` object.
logger: function(msg, msgLevel) {},
// A string or array of strings which denote who is allowed to connect to this grappler Server instance.
// The format of the string is: "hostname:port", "hostname", or an asterisk substituted for either the hostname
// or port, or both, to act as a wildcard.
origins: "*:*",
// An integer value in milliseconds representing the interval in which a ping is sent to an HTTP client for those
// transports that need to do so.
pingInterval: 3000,
// A storage provider used to store client objects. The default is to use 'object', a simple hash. Other available
// storage providers can be found in lib/storage. The value here is the name without the 'storage' prefix and file extension.
storage: 'object'
}
fnHandleNormalHTTP
adalah panggilan balik yang mampu mengganti grappler untuk koneksi HTTP masuk. Jika tidak ada header yang dikirim, maka grappler mengambil kendali koneksi. Argumen yang diberikan pada callback ini sama untuk event request
http.Server
, yaitu: objek http.ServerRequest dan http.ServerResponse. Perlu dicatat bahwa jika Anda ingin grappler menangani secara otomatis semua koneksi HTTP masuk tetapi ingin menentukan panggilan balik untuk fnAcceptClient
, Anda perlu menentukan nilai false
untuk fnHandleNormalHTTP
.
fnAcceptClient
adalah panggilan balik yang dijalankan saat klien terhubung. Tujuan utama dari panggilan balik ini adalah untuk memiliki kesempatan untuk segera menolak akses lebih lanjut klien ke server grappler. Misalnya, aplikasi Anda mungkin mempertahankan daftar hitam atau mungkin secara otomatis membuat daftar hitam/membatasi kembali IP tertentu setelah x koneksi dalam jangka waktu tertentu. Jika panggilan balik ini mengembalikan false
, koneksi akan terputus secara otomatis, jika tidak, koneksi akan diizinkan. Callback menerima satu argumen, yaitu objek net.Stream
yang mewakili koneksi.
function(client) { }
Event ini dikeluarkan setiap kali klien baru berhasil terhubung ke sistem. client
adalah turunan dari HttpClient
.
function(err) { }
Dipancarkan ketika terjadi kesalahan yang tidak terduga.
Mulai mendengarkan server pada port
dan host
yang ditentukan. Jika host
dihilangkan, server akan mendengarkan alamat IP mana pun.
Mengirim data
ke setiap klien yang terhubung menggunakan encoding
opsional.
Mematikan server dengan tidak lagi mendengarkan koneksi masuk dan memutuskan koneksi klien yang ada.
Ada satu objek penting lainnya yang digunakan dalam grappler, yaitu objek HttpClient
. HttpClient
mewakili pengguna yang terhubung ke server dan dapat digunakan untuk berinteraksi dengan pengguna tersebut.
function() { }
Dipancarkan ketika buffer tulis klien menjadi kosong.
function() { }
Dipancarkan ketika klien telah terputus.
Bidang bit yang berisi keadaan klien saat ini. Lihat objek STATE
yang disebutkan sebelumnya untuk bit yang valid.
Alamat IP klien.
Mengirim data
menggunakan encoding
opsional ke klien. Fungsi ini mengembalikan true
jika seluruh data berhasil dipindahkan ke buffer kernel. Jika tidak, ini akan mengembalikan false
jika semua atau sebagian data dimasukkan ke dalam antrian di memori pengguna. drain
akan dikeluarkan ketika buffer kernel bebas lagi.
Mengirim data
ke semua klien lain yang terhubung menggunakan encoding
opsional.
Memutuskan secara paksa koneksi klien ke server.