Kamis, 26 Januari 2017

Belajar Node.js Dan Socket.io Part 1 : Hello World

Sulit mencari tutorial pemrograman node.js + socket.io di Indonesia, jadi sebagian besar referensi pun saya ambil dari situs luar. Justru, hal itulah yang membuatnya semakin menarik dan menantang. Tujuan awal saya mempelajari komponen ini adalah untuk membuat multiplayer game. Belum sampai selesai sih, baru berhasil melakukan sinkronisasi data antar client. Prinsipnya, semua pemain akan memiliki data dari seluruh pemain yang berada dalam satu area server. Jika salah satu player melakukan aksi, misalnya berjalan ke arah kiri; ini akan diberitahukan ke server dan disebarkan ke pemain lain. Hasilnya akan segera diupdate secara bersamaan, sehingga semua player akan memiliki tampilan yang sama.



Namun karena tulisan ini masih menjelaskan secara otodidak, saya hanya mengkover teori dasar komunikasi antara client dan server dulu.

OK, let's go!

Pertama, pastikan node.js sudah terinstall. Node.js akan berperan sebagai server yang bekerja berdasarkan script yang kita buat. Ibaratnya seperti Apache + PHP. Node.js berperan sebagai keduanya, sebagai server dan juga hypertext processor dengan dukungan javascript. Sistem manajemen node.js bersifat modular, kita dapat menginstall modul yang berguna untuk memperluas fungsi node.js bila dibutuhkan. Untuk melakukannya, kita bisa menggunakan npm (node.js package manager).

Sekarang, kita harus buat file package.json di sebuah folder yang telah kita pilih untuk menampung source code. Folder ini juga yang akan menyimpan modul yang kita install.

{
  "name": "hello-world",
  "version": "0.0.1",
  "description": "A sample Node.js",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "socket.io": "^1.4.0"
  },
  "engines": {
    "node": "4.0.0"
  },
  "keywords": [
    "node",
    "sample",
    "test"
  ],
  "author": "Irvan",
  "license": "MIT"
}

* Yang saya tebalkan mungkin akan perlu perubahan di komputer anda, tergantung versi node.js dan proyek yang anda buat.

Jika package.json sudah dibuat, sekarang kita bisa menginstall modul yang diperlukan melalui npm. Semua moful yang dibuat ini akan dimasukkan ke dalam folder node_modules yang dibuat secara otomatis di dalam folder project yang telah anda pilih.

npm install socket.io

* Anda juga bisa mencoba dan melihat kegunaan modul-modul  lain dari: https://www.npmjs.com/browse.
* Dokumentasi untuk modul internal nodejs ada di: https://nodejs.org/api/modules.html

Eksperimen pertama tiak akan langsung melompat ke komunikasi client-server secara lengkap dahulu. Kita akan coba eksperimen paling sederhana, yaitu mencetak "Hello world"

var http = require('http');

var app = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": 'text/html'});
response.write("Hello world");
response.end()
console.log("Request OK");
});

app.listen(3000);

Kode di atas akan mengirim balasan/respon ketika client merequest sesuatu dari server. Entah itu ketika mengakses homepage atau yang lain, server akan tetap membalas "Hello word"


Variabel app merupakan objek yang diinisialisasikan dari kelas http melalui method createServer. Untuk melihat dokumentasi lengkap tentang kelas http dan method createSever, klik disini. Adapun, cuplikan prototypenya adalah sebagai berikut.

http.createServer (requestListener);

Parameter requestListener adalah fungsi callback yang berperan sebagai listener/pendengar. Mendengar apa? ya mendengar request dari client. Bentuk fungsinya:

resquestListener(request, response);

Ketika server memperoleh request dari client, requestListener akan dipanggil dengan 2 argumen, berupa data objek request dari client; dan data objek response yang harus diolah sebelum dikirim ke client.

Response yang harus dikirim oleh server berupa http packet yang sesuai dengan permintaan client. Sebuah paket terdiri atas 2 bagian penting:
- http packet header
- http packet body

Header berperan sebagai deskriptor dari data yang dikirim dalam body. Dan body adalah data hasil yang akan diterima client. Artikel Wikipedia berikut ini mungkin akan sedikit membantu (link).

Simpan source code sebagai test.js, lalu jalankan dari cmd:
# node test.js

Sampai disini dulu eksperimen kita. Berikutnya, nanti kita akan melanjutkan mengenau cara mengolah request dan mngirim data dari file.

See you again.

Load disqus comments

0 comments