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 padalocalhost
port8765
.- 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 diws://localhost:8765
.- Callback
on_message
,on_error
,on_close
, danon_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.