نحوه ایجاد یک سرور WebSocket ساده

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/06/25
  • تعداد بازدید: 2

در این درس نحوه ایجاد یک سرور WebSocket ساده با استفاده از کتابخانه‌های پایه پایتون را بررسی می‌کنیم. این روش برای یادگیری عملکرد داخلی پروتکل و مدیریت اتصال‌ها مناسب است، بدون اینکه به فریم‌ورک‌های آماده مثل FastAPI وابسته باشیم.

کتابخانه‌های مورد نیاز

  • برای این مثال از کتابخانه websockets استفاده می‌کنیم. این کتابخانه ساده و سبک است و روی پایتون 3.6 به بالا کار می‌کند.
  • همچنین از asyncio برای مدیریت اتصال‌ها به صورت همزمان بهره می‌بریم.

نمونه کد سرور WebSocket

import asyncio
import websockets

# تابعی برای مدیریت اتصال هر کلاینت
async def handle_client(websocket, path):
    print(f"کلاینت متصل شد: {websocket.remote_address}")
    try:
        async for message in websocket:
            print(f"پیام دریافتی: {message}")
            response = f"پیام شما دریافت شد: {message}"
            await websocket.send(response)
    except websockets.exceptions.ConnectionClosed:
        print("کلاینت قطع شد.")

# اجرای سرور روی localhost و پورت 8765
async def main():
    async with websockets.serve(handle_client, "localhost", 8765):
        print("سرور WebSocket فعال شد روی ws://localhost:8765")
        await asyncio.Future()  # نگه داشتن سرور فعال

asyncio.run(main())

توضیح کد

  • handle_client: هر اتصال جدید کلاینت را مدیریت می‌کند. پیام‌های دریافتی را دریافت کرده و پاسخ مناسب می‌فرستد.
  • websockets.serve: یک سرور WebSocket روی آدرس و پورت مشخص ایجاد می‌کند.
  • asyncio: امکان اجرای همزمان چندین اتصال بدون بلاک کردن برنامه را فراهم می‌کند.

مزایا و محدودیت‌ها

  • مزایا: ساده، سبک و مناسب برای یادگیری عملکرد داخلی WebSocket و مدیریت پیام‌ها.
  • محدودیت‌ها: برای برنامه‌های بزرگ و تولیدی نیاز به مدیریت اتصال‌های بیشتر، احراز هویت و امنیت دارد که باید به صورت دستی پیاده‌سازی شود.

 

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.