websockets
؟websockets هي مكتبة لبناء خوادم وعملاء WebSocket في Python مع التركيز على الصحة والبساطة والمتانة والأداء.
تم بناءه على أساس asyncio
، وهو إطار عمل الإدخال/الإخراج غير المتزامن القياسي لـ Python، ويوفر التنفيذ الافتراضي واجهة برمجة تطبيقات أنيقة قائمة على coroutine.
يتوفر أيضًا تطبيق أعلى threading
وتنفيذ Sans-I/O.
الوثائق متاحة على قراءة المستندات.
إليك خادم صدى مزودًا بواجهة برمجة تطبيقات asyncio
:
#!/usr/bin/env python
import asyncio
from websockets . server import serve
async def echo ( websocket ):
async for message in websocket :
await websocket . send ( message )
async def main ():
async with serve ( echo , "localhost" , 8765 ):
await asyncio . get_running_loop (). create_future () # run forever
asyncio . run ( main ())
إليك كيفية قيام العميل بإرسال الرسائل واستلامها باستخدام واجهة برمجة التطبيقات الخاصة threading
:
#!/usr/bin/env python
from websockets . sync . client import connect
def hello ():
with connect ( "ws://localhost:8765" ) as websocket :
websocket . send ( "Hello world!" )
message = websocket . recv ()
print ( f"Received: { message } " )
hello ()
هل يبدو ذلك جيداً؟
ابدأ مع البرنامج التعليمي!
متاح كجزء من اشتراك Tidelift
يعمل القائمون على صيانة مآخذ الويب وآلاف الحزم الأخرى مع Tidelift لتقديم الدعم التجاري والصيانة للتبعيات مفتوحة المصدر التي تستخدمها لبناء تطبيقاتك. يمكنك توفير الوقت وتقليل المخاطر وتحسين سلامة التعليمات البرمجية، مع الدفع لمشرفي التبعيات الدقيقة التي تستخدمها. يتعلم أكثر.
(إذا كنت تساهم في websockets
وترغب في أن تصبح مزودًا رسميًا للدعم، فأخبرني بذلك.)
websockets
؟ يتشكل تطوير websockets
من خلال أربعة مبادئ:
websockets
بشكل مكثف للتأكد من توافقها مع RFC 6455. ويفشل التكامل المستمر في ظل تغطية الفرع بنسبة 100%.msg = await ws.recv()
await ws.send(msg)
. تهتم websockets
بإدارة الاتصالات حتى تتمكن من التركيز على تطبيقك.websockets
للإنتاج. على سبيل المثال، كانت المكتبة الوحيدة التي تعاملت مع الضغط الخلفي بشكل صحيح قبل أن تصبح المشكلة معروفة على نطاق واسع في مجتمع بايثون.التوثيق هو مصدر قلق من الدرجة الأولى في المشروع. توجه إلى قراءة المستندات وانظر بنفسك.
websockets
؟ إذا كنت تفضل عمليات الاسترجاعات على coroutines: تم إنشاء websockets
لتوفير أفضل واجهة برمجة تطبيقات قائمة على coroutine لإدارة اتصالات WebSocket في Python. اختر مكتبة أخرى لواجهة برمجة التطبيقات المستندة إلى رد الاتصال.
إذا كنت تبحث عن مكتبة HTTP / WebSocket مختلطة: تهدف websockets
إلى أن تكون تطبيقًا ممتازًا لـ RFC 6455: بروتوكول WebSocket و RFC 7692: ملحقات الضغط لـ WebSocket. دعمه لـ HTTP ضئيل للغاية، وهو ما يكفي فقط لإجراء فحص سلامة HTTP.
إذا كنت تريد القيام بالأمرين معًا في نفس الخادم، فانظر إلى أطر عمل HTTP التي يتم إنشاؤها فوق websockets
لدعم اتصالات WebSocket، مثل Sanic.
تقارير الأخطاء والتصحيحات والاقتراحات هي موضع ترحيب!
للإبلاغ عن ثغرة أمنية، يرجى استخدام جهة الاتصال الأمنية Tidelift. سوف يقوم Tidelift بتنسيق الإصلاح والكشف.
لأي شيء آخر، يرجى فتح قضية أو إرسال طلب سحب.
يجب على المشاركين الالتزام بمدونة قواعد سلوك ميثاق المساهمين.
يتم إصدار websockets
بموجب ترخيص BSD.