Websocket ve Python’da Kullanımı

Bünyamin Ergen
2 min readAug 8, 2023

--

  1. Websocket Nedir?

WebSocket, web sunucusuyla istemci arasında sürekli açık, çift yönlü bir iletişim kanalı oluşturan bir protokoldür. Geleneksel HTTP protokolünden farklı olarak, WebSocket iletişimi bir kez kurulduğunda açık kalır, böylece verilerin sürekli olarak her iki yönde de aktarılmasını sağlar. Bu, özellikle gerçek zamanlı uygulamalar için idealdir.

Websocket Connection

2. Python’da Websocket Kullanımı

Python’da Websocket kullanmak için popüler websocket kütüphanesini kullanabiliriz. Bu kütüphane, WebSocket istemci ve sunucu işlevselliği sağlar.

2.1. Kurulum:

pip install websocket

2.2. Basit Websocket İstemcisi Oluşturma:

import websocket

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

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

def on_close(ws, close_status_code, close_msg):
print("### closed ###")

ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message=on_message,
on_error=on_error,
on_close=on_close)

ws.run_forever()

Bu kod, echo.websocket.org adlı bir echo sunucusuna bağlanır. Sunucu, gönderdiğiniz mesajı size geri gönderir.

2.3. Basit Websocket Sunucusu Oluşturma:

Python’da Websocket sunucusu oluşturmak için websocket-server kütüphanesini kullanabilirsiniz.

pip install websocket-server
from websocket_server import WebsocketServer

def new_client(client, server):
print("New client connected!")
server.send_message_to_all("Hey all, a new client has joined us")

def message_received(client, server, message):
print(f"Received: {message}")
server.send_message_to_all(message)

server = WebsocketServer(port=12345)
server.set_fn_new_client(new_client)
server.set_fn_message_received(message_received)
server.run_forever()

Bu sunucu, yeni bir istemci bağlandığında bir mesaj gönderir ve alınan tüm mesajları tüm istemcilere geri gönderir.

3. Sonuç

WebSocket, gerçek zamanlı uygulamalar için ideal bir çözümdür. Python’da websocket ve websocket-server kütüphaneleriyle kolayca WebSocket istemcileri ve sunucuları oluşturabilirsiniz. Bu, gerçek zamanlı etkileşimli uygulamalar geliştirmek için güçlü bir araçtır.

--

--