Pemrograman Jaringan di Node JS

router

Kali ini kami akan membahas tentang pemrograman jaringan di Node, beberapa hal yang dibahas adalah tentang socket dan tcp. Mari kita mulai saja

Jika beberapa aplikasi berkomunikasi melalui jaringan, mereka menggunakan socket. Socket adalah endpoint dari sebuah jaringan yang terdiri dari IP Address dan Port. IP Address adalah id unik sebuah device yang terhubung di jaringan. IP Address terdiri dari 32 bit (IPv4), karena kebutuhan yang meningkat dibuatlah IPv6 yang terdiri dari 128 bit, sehingga lebih banyak alamat yg bisa digunakan. Sedangkan port digunakan sebagai penanda service yang menggunakan fasilitas jaringan di komputer. Port 0 sampai 1023 biasa disebut well-known ports, misal port 80 yang biasa digunakan oleh web server.

TCP yang kepanjangannya adalah Transmission Control Protocol adalah protokol yang digunakan untuk mengirim data melalui jaringan. Paket data yang dikirim dalam jaringan dalam ukuran kecil kemungkinan tidak sampai di tujuan, ataupun sampai dengan urutan yang berbeda dengan sewaktu dikirim. permasalahan tersebut diatasi oleh protokol TCP ini.

Untuk TCP kita bisa menggunakan module ‘net’ yang ada di Node. Kita coba membuat file tcpserver.js dengan script sebagai berikut :

var net = require('net');

var server = net.createServer(function(conn) {

	console.log('server created');

	conn.on('data', function(data) {
		console.log('dari : ' + conn.remoteAddress + ', message : ' + data);
	});

	conn.on('close', function() {
		console.log('client closed');
	});

}).listen(9000);

Kode diatas membuat sebuah TCP server yang berjalan di localhost dan port 9000. Coba jalankan melalui console dengan perintah.

node tcpserver.js

 Setelah server berjalan, kita bisa mencoba melakukan koneksi melalui browser atau telnet. Jika kita melakukan koneksi menggunakan browser maka akan muncul string yang berisi get request protokol http di console server. Itu karena browser menggunakan protokol http untuk berkomunikasi sedangkan server yang kita buat hanya sekedar tcp server, sehingga bisa dibilang terjadi mis komunikasi antara client dengan server. Untuk pembahasan mengenai pembuatan http server akan dibahas dilain waktu.

Aplikasi Iseng : Aplikasi Chat Room Sederhana

Mari kita mencoba membuat aplikasi chat room sederhana menggunakan TCP Socket. Aplikasi ini terdiri dari 2 file tcpserver.js dan tcpclient.js. File tcpserver.js digunakan sebagai server yang membroadcast pesan yang diterima dari salah satu client ke client yang lain. Sedangkan tcpclient.js bertugas untuk mengambil data input dari console yang kemudian dikirim ke server.

var net = require('net');

var clients = [];

var server = net.createServer(function(conn) {
	conn.setEncoding('utf8');

	clients.push(conn);

	conn.on('data', function(data) {
		broadcast(data, conn);
	});

	conn.on('close', function() {
		clients.splice(clients.indexOf(conn), 1);
	});

	conn.on('error', function() {

	});

	function broadcast(message, sender) {
		clients.forEach(function (client) {

			if (client === sender) {
				return;
			} else {
				client.write(message);
			}
		});
	}

}).listen(9000, '127.0.0.1');

Pada kode diatas setiap koneksi dari client akan disimpan dalam array yang nanti bisa digunakan untuk melakukan broadcast. Kemudian jika salah satu client memutus koneksi maka data koneksi di dalam array juga dihapus ikut dihapus.

Kemudian ini adalah file tcpclient.js

var net = require('net');

// nama random
var username = 'Jon' + (Math.round(Math.random() * 1000));

var client = new net.Socket();
client.setEncoding('utf8');

client.connect ('9000','127.0.0.1', function () {
	console.log('Terhubung ke ruang chat');

	if(process.argv[2] != undefined) {
		username = process.argv[2];
	} 

	client.write(username + ' : Hai salam kenal');
});

process.stdin.resume();

process.stdin.on('data', function (data) {
	client.write(username + ' : ' + data);
});

client.on('data',function(data) {
	console.log(data.replace(/(rn|n|r)/gm,""));
});

client.on('close',function() {
	console.log('Koneksi putus');
});

Script diatas mengambil parameter pertama sebagai username  jika tidak dimasukkan maka menggunakan nama jon<random num> sebagai username nya. Untuk menangkap masukan keyboardnya menggunakan process.stdin.

coba jalankan file tcpserver.js terlebih dahulu kemudian jalankan file tcpclient.js di dalam console yang lain,  untuk client jalankan lebih dari satu.

selamat mencoba, dan semoga bermanfaat

5 Replies to “Pemrograman Jaringan di Node JS”

  1. Yes.. jadi ingat proyek bikin semacam messenger / game dengan Node sebagai tcp server dan AS3/AIR sebagai client. Seperti kata seorang kolega, creating a tcp server is like opening a can of worms. Rada myumet waktu itu. Mungkin karena gak pakai test-driven kali ya? Kalau mau diulang, mungkin lebih enak pakai AMQP, cuma gak tau AS3 ada lib AMQP gak..

    1. iya om, perlu mengimpelementasikan protokol lg diatas tcp agar lebih enak dalam memdevelop aplikasi. Bisa http atau web socket, tp web socket sepertinya lebih bagus untuk realtime communication.

      Btw, kalo AMPQ mungkin cocoknya untuk komunikasi antar service di backend ya?. kalo utk client server bisa pake XMPP

Leave a Reply

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