diff --git a/docs/pt/docs/advanced/websockets.md b/docs/pt/docs/advanced/websockets.md index 721c0b403..c31bb94b6 100644 --- a/docs/pt/docs/advanced/websockets.md +++ b/docs/pt/docs/advanced/websockets.md @@ -1,10 +1,10 @@ -# WebSockets +# WebSockets { #websockets } Você pode usar WebSockets com **FastAPI**. -## Instalando `WebSockets` +## Instale `websockets` { #install-websockets } -Garanta que você criou um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, o ativou e instalou o `websockets`: +Garanta que você criou um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, o ativou e instalou o `websockets` (uma biblioteca Python que facilita o uso do protocolo "WebSocket"):
@@ -16,9 +16,9 @@ $ pip install websockets
-## Cliente WebSockets +## Cliente WebSockets { #websockets-client } -### Em produção +### Em produção { #in-production } Em seu sistema de produção, você provavelmente tem um frontend criado com um framework moderno como React, Vue.js ou Angular. @@ -40,11 +40,11 @@ Mas é a maneira mais simples de focar no lado do servidor de WebSockets e ter u {* ../../docs_src/websockets/tutorial001.py hl[2,6:38,41:43] *} -## Criando um `websocket` +## Crie um `websocket` { #create-a-websocket } Em sua aplicação **FastAPI**, crie um `websocket`: -{*../../docs_src/websockets/tutorial001.py hl[46:47]*} +{* ../../docs_src/websockets/tutorial001.py hl[1,46:47] *} /// note | Detalhes Técnicos @@ -54,15 +54,15 @@ A **FastAPI** fornece o mesmo `WebSocket` diretamente apenas como uma conveniên /// -## Aguardar por mensagens e enviar mensagens +## Aguarde mensagens e envie mensagens { #await-for-messages-and-send-messages } Em sua rota WebSocket você pode esperar (`await`) por mensagens e enviar mensagens. -{*../../docs_src/websockets/tutorial001.py hl[48:52]*} +{* ../../docs_src/websockets/tutorial001.py hl[48:52] *} Você pode receber e enviar dados binários, de texto e JSON. -## Tente você mesmo +## Tente { #try-it } Se seu arquivo for nomeado `main.py`, execute sua aplicação com: @@ -96,7 +96,7 @@ Você pode enviar (e receber) muitas mensagens: E todas elas usarão a mesma conexão WebSocket. -## Usando `Depends` e outros +## Usando `Depends` e outros { #using-depends-and-others } Nos endpoints WebSocket você pode importar do `fastapi` e usar: @@ -109,7 +109,7 @@ Nos endpoints WebSocket você pode importar do `fastapi` e usar: Eles funcionam da mesma forma que para outros endpoints FastAPI/*operações de rota*: -{*../../docs_src/websockets/tutorial002_an_py310.py hl[68:69,82]*} +{* ../../docs_src/websockets/tutorial002_an_py310.py hl[68:69,82] *} /// info | Informação @@ -119,7 +119,7 @@ Você pode usar um código de fechamento dos http://127.0.0.1:8000. +Abra seu navegador em: http://127.0.0.1:8000. Lá você pode definir: -* O "Item ID", usado na rota. +* O "Item ID", usado no path. * O "Token" usado como um parâmetro de consulta. /// tip | Dica @@ -150,15 +150,15 @@ Com isso você pode conectar o WebSocket e então enviar e receber mensagens: -## Lidando com desconexões e múltiplos clientes +## Lidando com desconexões e múltiplos clientes { #handling-disconnections-and-multiple-clients } Quando uma conexão WebSocket é fechada, o `await websocket.receive_text()` levantará uma exceção `WebSocketDisconnect`, que você pode então capturar e lidar como neste exemplo. -{*../../docs_src/websockets/tutorial003_py39.py hl[79:81]*} +{* ../../docs_src/websockets/tutorial003_py39.py hl[79:81] *} Para testar: -* Abrar o aplicativo com várias abas do navegador. +* Abra o aplicativo com várias abas do navegador. * Escreva mensagens a partir delas. * Então feche uma das abas. @@ -172,13 +172,13 @@ Client #1596980209979 left the chat O app acima é um exemplo mínimo e simples para demonstrar como lidar e transmitir mensagens para várias conexões WebSocket. -Mas tenha em mente que, como tudo é manipulado na memória, em uma única lista, ele só funcionará enquanto o processo estiver em execução e só funcionará com um único processo. +Mas tenha em mente que, como tudo é manipulado na memória, em uma única list, ele só funcionará enquanto o processo estiver em execução e só funcionará com um único processo. Se você precisa de algo fácil de integrar com o FastAPI, mas que seja mais robusto, suportado por Redis, PostgreSQL ou outros, verifique o encode/broadcaster. /// -## Mais informações +## Mais informações { #more-info } Para aprender mais sobre as opções, verifique a documentação do Starlette para: