Setup Server WebSocket di Python 3 Raspberry Pi
Komunikasi antara sistem yang akan kita buat dengan antarmukanya yang berbasis web menggunakan media websocket. Websocket merupakan teknologi baru dalam hal pertukaran data yang diperkenalkan bersamaan dengan lahirnya HTML5. Tidak seperti AJAX, websocket tidak menggunakan koneksi berbasis polling, namun koneksinya dua arah dan bisa berlangsung secara simultan. Karena koneksinya berjalan dua arah, maka sumber daya yang diperlukan akan sangat kecil dan kecepatan respon/latency-nya bisa sangat kecil juga.
Di Raspberry Pi, ada banyak server yang mendukung implementasi websocket, mulai dari Node.js, Apache, dan yang akan kita gunakan pada tulisan ini adalah Python Tornado. Python Tornado sendiri merupakan sebuah web framework. Python tornado menyediakan lingkungan pengembangan web berbasis Python. Baik untuk bahasa/scripting, modul-modul hingga web servernya sendiri telah disediakan oleh Tornado. Selain web server, Tornado juga mendukung websocket server dan websocket client secara native.
Langkah pertama kita untuk melakukan konfigurasi server websocket menggunakan Tornado adalah dengan menginstall Python 3 di Raspberry Pi yang akan kita gunakan. Caranya cukup dengan menginstall melalui apt:
$ sudo apt-get update -y
$ sudo apt-get dist-upgrade -y
$ sudo apt-get install python3 python3-pip
Setelah itu, kita bisa langsung menginstall Tornado menggunakan pip3:
$ sudo pip3 install tornado
Setelah Tornado berhasil terinstall, kita bisa mencoba untuk menjalankannya dari Python 3.
$ python3
Kemudian ketik script berikut:
import tornado tornado.version
Hasilnya:
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado
>>> tornado.version
'4.3'
>>>
Pada tulisan ini versi Tornado yang digunakan adalah versi 4.3.
Contoh Sederhana Aplikasi Python dengan Antarmuka Web Menggunakan Websocket
Kita akan mencoba mengimplementasikan websocket dengan aplikasi sederhana. Aplikasi ini akan mendemonstrasikan bagaimana antarmuka bisa berkomunikasi dan saling bertukar data dengan server dengan cepat, langsung dan dua arah. Pertama untuk membuat salinan proyek dari GitHub, kita memerlukan git
. Jika belum terinstall, install git
dengan menggunakan sudo apt-get install git -y
. Kemudian salin contoh aplikasi WebSocket dari GitHub dengan perintah sebagai berikut:
Note: Jika folder ~/project/interfacing
belum dibuat, buat dulu dengan mengganti cd
dengan mkdir
, kemudian lakukan cd
lagi
$ cd ~/project/interfacing
$ git clone https://github.com/hiroakis/tornado-websocket-example.git
Tunggu beberapa saat dan setelah git
selesai mengunduh filenya, masuk ke folder aplikasinya.
$ cd ./tornado-websocket-example
Kemudian lakukan penyuntingan pada file antarmuka index.html. Disini kita harus menyesuakian IP / alamat dari server websocket sesuai dengan konfigurasi jaringan kita. Caranya bisa menggunakan WinSCP dan Notepad++ yang telah dijelankan pada tulisan sebelumnya. Detilnya bisa dilihat di video.
Setelah itu, kita bisa langsung mengeksekusi file app.py untuk menjalankan server websocketnya dan mulai bereksplorasi melalui antarmukanya dengan mengakses alamat http://10.8.0.200:8888.
Komentar
'tornado.web' has no attribute 'asynchronous'
mohon dibantu kak, step by step sudah saya ikuti tapi terjadi error seperti ini.
pi@raspberrypi:~/project/interfacing/tornado-websocket-example $ sudo python3 ./app.py
Traceback (most recent call last):
File "./app.py", line 22, in <module>
class ApiHandler(web.RequestHandler):
File "./app.py", line 24, in ApiHandler
@web.asynchronous
AttributeError: module 'tornado.web' has no attribute 'asynchronous'
terima kasih
Install Tornado versi 4.3
Halo,
Coba periksa versi tornado yang terinstall, pastikan menggunakan versi 4.3. Cara memeriksa silahkan ketik python dan enter di terimal terus ketik lagi tornado.version.
Jika versinya beda, uninstall dulu tornadonya:
$ pip uninstall tornado
$ pip install "tornado==4.3"
Semoga membantu
HTSL://HIGH THINKING SIMPLE LIVING . ME
websocket status closed
sekarang websocket status nya closed kak. gak bisa open