unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Web Socket

Web Socket #

Pengertian #

WebSocket adalah protokol komunikasi yang menyediakan saluran komunikasi full-duplex (dua arah) melalui satu koneksi TCP. Ini dirancang untuk digunakan dalam aplikasi web yang memerlukan interaksi real-time antara klien (misalnya, browser) dan server.

Keunggulan #

  • Real-time Communication: WebSocket memungkinkan komunikasi dua arah antara klien dan server dalam waktu nyata.
  • Efficient Data Transfer: Karena komunikasi dilakukan melalui satu koneksi, WebSocket mengurangi overhead jaringan yang terjadi pada HTTP, sehingga lebih efisien untuk aplikasi yang memerlukan banyak komunikasi cepat.
  • Full-Duplex Communication: Kedua belah pihak (klien dan server) dapat mengirim dan menerima data secara simultan.

Penggunaan #

Ada beberapa pustaka yang mendukung WebSocket di Python. Salah satu pustaka yang paling populer adalah websockets. Berikut adalah contoh bagaimana Anda dapat menggunakan websockets untuk membuat server dan klien WebSocket.

Instalasi #

Anda perlu menginstal pustaka websockets terlebih dahulu:

pip install websockets

Server WebSocket #

Berikut adalah contoh sederhana dari server WebSocket menggunakan pustaka websockets:

import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(f"Echo: {message}")

start_server = websockets.serve(echo, "localhost", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

Penjelasan:

  • websockets.serve(echo, "localhost", 8765) memulai server WebSocket yang mendengarkan pada localhost port 8765.
  • Fungsi echo adalah handler yang akan dipanggil setiap kali ada koneksi baru. Fungsi ini menerima pesan dari klien dan mengirim kembali pesan yang sama dengan prefix “Echo: “.

Klien WebSocket #

Berikut adalah contoh sederhana dari klien WebSocket menggunakan pustaka websockets:

import asyncio
import websockets

async def hello():
    uri = "ws://localhost:8765"
    async with websockets.connect(uri) as websocket:
        await websocket.send("Hello, WebSocket!")
        response = await websocket.recv()
        print(response)

asyncio.get_event_loop().run_until_complete(hello())

Penjelasan:

  • websockets.connect(uri) membuka koneksi WebSocket ke server.
  • Klien mengirim pesan “Hello, WebSocket!” ke server dan kemudian menerima serta mencetak respons dari server.

websocket-client #

Jika Anda ingin menggunakan pustaka lain untuk klien WebSocket, Anda bisa menggunakan websocket-client. Berikut adalah contoh cara menggunakannya:

Instalasi #

pip install websocket-client

Klien WebSocket #

import websocket

def on_message(ws, message):
    print(f"Received: {message}")

def on_error(ws, error):
    print(f"Error: {error}")

def on_close(ws):
    print("Connection closed")

def on_open(ws):
    def run(*args):
        ws.send("Hello, WebSocket!")
    run()

if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://localhost:8765",
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()

Penjelasan:

  • websocket.WebSocketApp membuat instance klien WebSocket yang terhubung ke server di ws://localhost:8765.
  • Callback on_message, on_error, on_close, dan on_open menangani pesan, kesalahan, penutupan koneksi, dan pembukaan koneksi.
  • ws.run_forever() menjalankan klien WebSocket dan menjaga koneksi tetap terbuka.

Kesimpulan #

WebSocket adalah teknologi yang kuat untuk aplikasi yang memerlukan komunikasi real-time antara klien dan server. Dengan menggunakan pustaka seperti websockets di Python, Anda dapat dengan mudah membuat server dan klien WebSocket yang efisien dan responsif. Pustaka seperti websocket-client juga memberikan fleksibilitas dalam implementasi klien WebSocket.

« Socket
Web Server »