Contoh Pemrograman WebSocket Client Menggunakan Pelles C dan 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.

Iklan
Perihal

Cek situs kami di http://teknikelektrolinks.com. Blog Raspberry Pi: http://raspi.teknikelektrolinks.com

Tagged with: , ,
Ditulis dalam C/C++

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

Bergabunglah dengan 2.501 pengikut lainnya

Hot Links




Display Counter 3-Digit Dengan Koneksi Wi-Fi
Display Nomor Antrian WiFi Android
Mengontrol Relay Via USB/Serial dan Wi-Fi
USB Relay USB-2REL
USB Relay USB-4REL
Water Level Control WLC-02
Serial Relay SER-4REL
NEO STARDUINO SMS ALARM

Alarm SMS Berbasis NEO STARDUINO

1 PC – 6 Unit USB-2REL

Testing 6 USB-2REL Pada 1 Komputer

Standard Pengujian USB-2REL

Pengujian USB-2REL Sebelum Dikirim

LPT-4REL on Knoppix 7.0.5

Testing LPT-4REL on Knoppix Linux

T101 Inkubator Telur

T101 Inkubator Penetas Telur

KONTROL PERALATAN LISTRIK VIA PORT LPT KOMPUTER

Demo Kontrol Kontaktor via Port LPT

STARDUINO meets ANDROID

Demo Kontrol Bluetooth Relay Android

STARDUINO SMS RELAY

Kontrol Relay Via SMS Dengan Starduino

STARDUINO WEB RELAY

Demo Kontrol Relay Via Web/Internet

JustBASIC USB-2REL Control

Demo Kontrol USB-2REL + JustBASIC

STARDUINO + GPS + LCD

Demo Starduino GPS Dengan LCD

USB-2REL EXTREME TEST

Demo Kontrol On/Off Lampu USB-2REL

THERMOSTAT T101 IN ACTION

Demo Thermostat T101 Pada SV=37.5°C

WATER LEVEL CONTROL WLC-02

Demo Kontrol Level Air Tandon WLC-02

HUMIDITY CONTROLLER H103

Demo Kontrol Kelembaban H103 (DHT11)

%d blogger menyukai ini: