websockets
무엇입니까?websockets는 정확성, 단순성, 견고성 및 성능에 중점을 두고 Python으로 WebSocket 서버와 클라이언트를 구축하기 위한 라이브러리입니다.
Python의 표준 비동기 I/O 프레임워크인 asyncio
기반으로 구축된 기본 구현은 우아한 코루틴 기반 API를 제공합니다.
threading
위에 구현 및 Sans-I/O 구현도 사용할 수 있습니다.
문서는 문서 읽기에서 볼 수 있습니다.
다음은 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
사용하면 안되나요? 코루틴보다 콜백을 선호하는 경우: Python에서 WebSocket 연결을 관리하기 위한 최고의 코루틴 기반 API를 제공하기 위해 websockets
만들어졌습니다. 콜백 기반 API를 위한 다른 라이브러리를 선택하세요.
혼합된 HTTP/WebSocket 라이브러리를 찾고 있다면 websockets
RFC 6455: WebSocket 프로토콜 및 RFC 7692: WebSocket용 압축 확장의 탁월한 구현을 목표로 합니다. HTTP에 대한 지원은 최소한입니다. HTTP 상태 확인에 충분합니다.
동일한 서버에서 두 가지 작업을 모두 수행하려면 Sanic과 같이 WebSocket 연결을 지원하기 위해 websockets
위에 구축되는 HTTP 프레임워크를 살펴보세요.
버그 보고서, 패치 및 제안을 환영합니다!
보안 취약점을 신고하려면 Tidelift 보안 담당자에게 문의하세요. Tidelift는 수정 및 공개를 조정할 것입니다.
그 밖의 사항이 있으면 이슈를 열거나 풀 요청을 보내주세요.
참가자는 기여자 규약 행동 강령을 준수해야 합니다.
websockets
BSD 라이센스에 따라 릴리스됩니다.