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 padalocalhostport8765.- Fungsi
echoadalah 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.WebSocketAppmembuat instance klien WebSocket yang terhubung ke server diws://localhost:8765.- Callback
on_message,on_error,on_close, danon_openmenangani 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.