diff --git a/docs/pt/docs/advanced/websockets.md b/docs/pt/docs/advanced/websockets.md new file mode 100644 index 000000000..694f2bb5d --- /dev/null +++ b/docs/pt/docs/advanced/websockets.md @@ -0,0 +1,188 @@ +# WebSockets + +Você pode usar WebSockets com **FastAPI**. + +## Instalando `WebSockets` + +Garanta que você criou um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, o ativou e instalou o `websockets`: + +
+
+Você pode digitar mensagens na caixa de entrada e enviá-las:
+
+
+
+E sua aplicação **FastAPI** com WebSockets responderá de volta:
+
+
+
+Você pode enviar (e receber) muitas mensagens:
+
+
+
+E todas elas usarão a mesma conexão WebSocket.
+
+## Usando `Depends` e outros
+
+Nos endpoints WebSocket você pode importar do `fastapi` e usar:
+
+* `Depends`
+* `Security`
+* `Cookie`
+* `Header`
+* `Path`
+* `Query`
+
+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]*}
+
+/// info | Informação
+
+Como isso é um WebSocket, não faz muito sentido levantar uma `HTTPException`, em vez disso levantamos uma `WebSocketException`.
+
+Você pode usar um código de fechamento dos códigos válidos definidos na especificação.
+
+///
+
+### Tente os WebSockets com dependências
+
+Se seu arquivo for nomeado `main.py`, execute sua aplicação com:
+
+
+
+## Lidando com desconexões e múltiplos clientes
+
+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]*}
+
+Para testar:
+
+* Abrar o aplicativo com várias abas do navegador.
+* Escreva mensagens a partir delas.
+* Então feche uma das abas.
+
+Isso levantará a exceção `WebSocketDisconnect`, e todos os outros clientes receberão uma mensagem como:
+
+```
+Client #1596980209979 left the chat
+```
+
+/// tip | Dica
+
+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.
+
+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
+
+Para aprender mais sobre as opções, verifique a documentação do Starlette para:
+
+* A classe `WebSocket`.
+* Manipulação de WebSockets baseada em classes.