websockets
?websockets é uma biblioteca para construção de servidores e clientes WebSocket em Python com foco em correção, simplicidade, robustez e desempenho.
Construída sobre asyncio
, a estrutura de E/S assíncrona padrão do Python, a implementação padrão fornece uma API elegante baseada em corrotinas.
Uma implementação sobre threading
e uma implementação Sans-I/O também estão disponíveis.
A documentação está disponível em Leia os documentos.
Aqui está um servidor de eco com a API 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 ())
Veja como um cliente envia e recebe mensagens com a API 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 ()
Isso parece bom?
Comece com o tutorial!
Disponível como parte da assinatura Tidelift
Os mantenedores de websockets e milhares de outros pacotes estão trabalhando com o Tidelift para fornecer suporte comercial e manutenção para as dependências de código aberto que você usa para construir seus aplicativos. Economize tempo, reduza riscos e melhore a integridade do código, enquanto paga os mantenedores das dependências exatas que você usa. Saber mais.
(Se você contribuir com websockets
e quiser se tornar um provedor de suporte oficial, me avise.)
websockets
? O desenvolvimento de websockets
é moldado por quatro princípios:
websockets
são fortemente testados quanto à conformidade com RFC 6455. A integração contínua falha em 100% de cobertura de filiais.msg = await ws.recv()
e await ws.send(msg)
. websockets
cuida do gerenciamento de conexões para que você possa se concentrar em sua aplicação.websockets
são construídos para produção. Por exemplo, era a única biblioteca que lidava corretamente com a contrapressão antes do problema se tornar amplamente conhecido na comunidade Python.A documentação é uma preocupação de primeira classe no projeto. Vá para Leia os documentos e veja por si mesmo.
websockets
? Se você preferir retornos de chamada em vez de corrotinas: websockets
foi criado para fornecer a melhor API baseada em corrotinas para gerenciar conexões WebSocket em Python. Escolha outra biblioteca para uma API baseada em retorno de chamada.
Se você está procurando uma biblioteca mista HTTP/WebSocket: websockets
pretende ser uma excelente implementação de RFC 6455: O protocolo WebSocket e RFC 7692: Extensões de compactação para WebSocket. Seu suporte para HTTP é mínimo – apenas o suficiente para uma verificação de integridade do HTTP.
Se você quiser fazer as duas coisas no mesmo servidor, observe as estruturas HTTP construídas sobre websockets
para oferecer suporte a conexões WebSocket, como Sanic.
Relatórios de bugs, patches e sugestões são bem-vindos!
Para relatar uma vulnerabilidade de segurança, use o contato de segurança da Tidelift. A Tidelift coordenará a correção e divulgação.
Para qualquer outra coisa, abra um problema ou envie uma solicitação pull.
Os participantes devem respeitar o código de conduta do Contributor Covenant.
websockets
é lançado sob a licença BSD.