Teknik Elektro LinksThermostat, Panel Bel, Board Mikro, Driver Relay.

Contoh Pemrograman WebSocket Client Menggunakan Library noPoll (OpenSource WebSocket Toolkit)

WebSocket adalah protokol komunikasi yang menyediakan saluran komunikasi full-duplex melalui koneksi TCP. WebSocket dirancang untuk diimplementasikan pada aplikasi web-server dan web-browser, tapi dapat juga digunakan pada aplikasi client/server pada umumnya.

WebSocket memfasilitasi pertukaran data (real-time) antara web-browser dan web-server. Dengan WebSocket, server dapat mengirimkan data ke client (browser) tanpa secara independen tanpa adanya permintaan dari browser.

Tulisan ini secara singkat akan membahas tentang contoh (eksperimen) pemrograman WebSocket pada sisi client menggunakan bahasa C dengan menggunakan library opensource noPoll. Kompiler C yang saya gunakan dalam eksperimen ini adalah Pelles C.

Eksperimen ini sangat sederhana. Program akan melakukan koneksi ke webserver wss://echo.websocket.org dan jika berhasil, maka program akan mengirimkan sebuah data string dan kemudian membaca echo yang dikirimkan oleh webserver.

Nah, kita mulai pembahasan singkat ini dengan noPoll.

noPoll – OpenSource WebSocket Toolkit

noPoll adalah implementasi WebSocket yang ditulis dalam bahasa C (ANSI) untuk membangun aplikasi (solusi) WebSocket atau mendukung aplikasi berbasis TCP yang sudah berjalan. noPoll mendukung koneksi WebSocket (ws://) dan TLS WebSocket (wss://) dengan model pemrograman message based (handler notified) atau stream oriented access.

Selengkapnya mengenai noPoll dapat Anda baca di halaman situsnya dengan alamat:

http://www.aspl.es/nopoll/

Lisensi noPoll mengijinkan kita untuk menggunakannya secara bebas, bahkan untuk aplikasi komersial.

Instalasi noPoll

Pertama-tama, download installer noPoll sesuai dengan sistem operasi Windows yang digunakan (32/64-bit). Pilih salah satu dari link-link berikut ini.

noPoll-win32

noPoll-win64

Setelah download selesai, instalasi dapat dilakukan dengan mengeksekusi file installer.

nopoll1

Setelah instalasi selesai, copy file libnopoll.lib yang berada pada noPollW32/lib ke folder library Pelles C.

libnopoll

Project nopoll_test

nopoll_test adalah proyek Win32-Console-Program dengan sebuah file kode program main.c. Karena proyek menggunakan header dan library asing (nopoll.h dan libnopoll.lib), maka perlu dilakukan sedikit konfigurasi pada Project Options seperti ditunjukkan oleh gambar berikut ini.

nopoll_h nopoll_test

Listing Program

#include <stdio.h>
#include <string.h>
#include <nopoll.h>

noPollCtx *ctx;
noPollConn *conn;

int main(int argc, char *argv[])
{
 char buff[100];
 char *s;
 int n;

 printf ("\nTesting Library WebSocket noPoll\n");
 printf ("Chandra MDE - Teknik Elektro Links\n");
 printf ("----------------------------------\n\n");

 printf ("Connecting to wss://echo.websocket.org:80 ... ");
 ctx = nopoll_ctx_new();
 conn = nopoll_conn_new(ctx, "echo.websocket.org", "80", NULL, "/", NULL, NULL);
 nopoll_conn_wait_until_connection_ready(conn, 5);

 if (nopoll_conn_is_ok(conn))
 {
   printf ("Connected.\n");

   if (argc<2)
   {
     s = (char *)calloc(39, sizeof(char));
     strcpy(s, "*** TELINKS-USBINOV-TELINKS-USBINOV ***");
   }
   else
   {
     s = (char *)calloc(strlen(argv[1]), sizeof(char));
     strcpy (s, argv[1]);
   }

   printf ("Send string:\n \"%s\", %d chars\n", s, strlen(s));
   nopoll_conn_send_text (conn, s, strlen(s));

   printf ("\nWait a second...\n\n");
   _sleep(1);

   printf ("Read string from wss://echo.websocket.org ...\n");
   n = -1;
   while (n==-1)
     n = nopoll_conn_read(conn, buff, 100, nopoll_true, 100);
   printf ("Receive string:\n \"%s\", %d chars\n\n", buff, strlen(buff));

   nopoll_conn_close(conn);
   free(s);
 }
 else
   printf ("Connection fail.\n");

 return EXIT_SUCCESS;
}

Program mengharapkan adanya sebuah parameter teks yang akan dikirim ke web-server. Jika parameter kosong (tidak diberikan), maka program akan mengirimkan teks default yakni “*** TELINKS-USBINOV-TELINKS-USBINOV ***“.

Contoh penggunaan program dengan paramter adalah sebagai berikut:

e:\cli\>nopoll_test "Testing echo."

Screenshot

nopoll_shot

Untuk menjalankan program, diperlukan beberapa library dinamik antara lain:

  • libnopoll.dll
  • libeay32.dll
  • ssleay32.dll
  • libgcc_s_dw2-1.dll

Tiga library dinamik terdapat pada direktori /bin dari folder instalasi noPoll. Untuk library libgcc_s_dw2-1.dll dapat Anda download dari internet.

Btw, saya juga mencoba program yang sama pada platform Linux, hasilnya adalah sebagai berikut:

nopoll_test_linux

Untuk kompilasi program pada platform linux, ubah fungsi _sleep(1); menjadi sleep(1) dan lakukan langkah kompilasi dengan perintah sebagai berikut:

$ gcc -I/usr/local/include/nopoll -lnopoll -o nopoll_test main.c

Penutup

Sebagai pemula yang sedang belajar pemrograman WebSocket, saya senang dengan hasil eksperimen ini. Setidaknya sekarang kita memiliki toolkit pemrograman yang dapat kita gunakan untuk membangun aplikasi WebSocket menggunakan bahasa C. Dan yang tak kalah penting adalah: multi-platform.

Nah, sekian dulu. Terima kasih sudah membaca, semoga bermanfaat.

Selamat berkarya.

 

Add a Comment

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