websockets
คืออะไร?websockets เป็นไลบรารีสำหรับสร้างเซิร์ฟเวอร์และไคลเอนต์ WebSocket ใน Python โดยเน้นที่ความถูกต้อง ความเรียบง่าย ความทนทาน และประสิทธิภาพ
สร้างขึ้นจาก asyncio
ซึ่งเป็นเฟรมเวิร์ก I/O แบบอะซิงโครนัสมาตรฐานของ Python การใช้งานเริ่มต้นมอบ API ที่ใช้ coroutine ที่หรูหรา
การใช้งานนอกเหนือจาก threading
และการใช้งาน Sans-I/O ก็พร้อมใช้งานเช่นกัน
เอกสารมีอยู่ใน Read the Docs
นี่คือเซิร์ฟเวอร์ echo ที่มี asyncio
API:
#!/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
API:
#!/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
ถูกสร้างขึ้นเพื่อการผลิต ตัวอย่างเช่น มันเป็นไลบรารีเพียงแห่งเดียวที่จัดการแรงดันย้อนกลับได้อย่างถูกต้องก่อนที่ปัญหานี้จะเป็นที่รู้จักอย่างกว้างขวางในชุมชน Pythonเอกสารประกอบถือเป็นข้อกังวลอันดับหนึ่งในโครงการ ตรงไปที่ อ่านเอกสาร และดูด้วยตัวคุณเอง
websockets
? หากคุณต้องการเรียกกลับมากกว่า coroutines: websockets
ถูกสร้างขึ้นเพื่อมอบ API ที่ใช้ coroutine ที่ดีที่สุดในการจัดการการเชื่อมต่อ WebSocket ใน Python เลือกไลบรารีอื่นสำหรับ API ที่ใช้การเรียกกลับ
หากคุณกำลังมองหาไลบรารี HTTP / WebSocket แบบผสม: websockets
มุ่งหวังที่จะใช้งาน RFC 6455: WebSocket Protocol และ RFC 7692: ส่วนขยายการบีบอัดสำหรับ WebSocket ได้อย่างดีเยี่ยม การรองรับ HTTP นั้นน้อยมาก — เพียงพอสำหรับการตรวจสุขภาพ HTTP
หากคุณต้องการทำทั้งสองอย่างในเซิร์ฟเวอร์เดียวกัน ให้ดูที่เฟรมเวิร์ก HTTP ที่สร้างบน websockets
เพื่อรองรับการเชื่อมต่อ WebSocket เช่น Sanic
ยินดีรายงานข้อผิดพลาด แพตช์ และข้อเสนอแนะ!
หากต้องการรายงานช่องโหว่ด้านความปลอดภัย โปรดใช้ผู้ติดต่อด้านความปลอดภัยของ Tidelift Tidelift จะประสานการแก้ไขและเปิดเผยข้อมูล
สำหรับสิ่งอื่นใด โปรดเปิดประเด็นหรือส่งคำขอดึง
ผู้เข้าร่วมจะต้องปฏิบัติตามหลักจรรยาบรรณของผู้ร่วมให้ข้อมูล
websockets
เปิดตัวภายใต้ลิขสิทธิ์ BSD