# WebSockets { #websockets } **FastAPI** ile [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) kullanabilirsiniz. ## `websockets` Kurulumu { #install-websockets } Bir [sanal ortam](../virtual-environments.md) oluşturduğunuzdan, onu aktive ettiğinizden ve `websockets`'i ("WebSocket" protokolünü kullanmayı kolaylaştıran bir Python kütüphanesi) kurduğunuzdan emin olun:
Input kutusuna mesaj yazıp gönderebilirsiniz:
Ve WebSockets kullanan **FastAPI** uygulamanız yanıt döndürecektir:
Birçok mesaj gönderebilir (ve alabilirsiniz):
Ve hepsinde aynı WebSocket bağlantısı kullanılacaktır.
## `Depends` ve Diğerlerini Kullanma { #using-depends-and-others }
WebSocket endpoint'lerinde `fastapi` içinden import edip şunları kullanabilirsiniz:
* `Depends`
* `Security`
* `Cookie`
* `Header`
* `Path`
* `Query`
Diğer FastAPI endpoint'leri/*path operations* ile aynı şekilde çalışırlar:
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
/// note
Bu bir WebSocket olduğu için `HTTPException` raise etmek pek anlamlı değildir; bunun yerine `WebSocketException` raise ederiz.
[Spesifikasyonda tanımlanan geçerli kodlar](https://tools.ietf.org/html/rfc6455#section-7.4.1) arasından bir kapatma kodu kullanabilirsiniz.
///
### Dependency'lerle WebSockets'i Deneyin { #try-the-websockets-with-dependencies }
Uygulamanızı çalıştırın:
## Bağlantı Kopmalarını ve Birden Fazla Client'ı Yönetme { #handling-disconnections-and-multiple-clients }
Bir WebSocket bağlantısı kapandığında, `await websocket.receive_text()` bir `WebSocketDisconnect` exception'ı raise eder; ardından bunu bu örnekteki gibi yakalayıp (catch) yönetebilirsiniz.
{* ../../docs_src/websockets_/tutorial003_py310.py hl[79:81] *}
Denemek için:
* Uygulamayı birden fazla tarayıcı sekmesiyle açın.
* Bu sekmelerden mesaj yazın.
* Sonra sekmelerden birini kapatın.
Bu, `WebSocketDisconnect` exception'ını raise eder ve diğer tüm client'lar şuna benzer bir mesaj alır:
```
Client #1596980209979 left the chat
```
/// tip
Yukarıdaki uygulama, birden fazla WebSocket bağlantısına mesajları nasıl yönetip broadcast edeceğinizi göstermek için minimal ve basit bir örnektir.
Ancak her şey memory'de, tek bir list içinde yönetildiği için yalnızca process çalıştığı sürece ve yalnızca tek bir process ile çalışacaktır.
FastAPI ile kolay entegre olan ama Redis, PostgreSQL vb. tarafından desteklenen daha sağlam bir şeye ihtiyacınız varsa [encode/broadcaster](https://github.com/encode/broadcaster)'a göz atın.
///
## Daha Fazla Bilgi { #more-info }
Seçenekler hakkında daha fazlasını öğrenmek için Starlette dokümantasyonunda şunlara bakın:
* [`WebSocket` class'ı](https://www.starlette.dev/websockets/).
* [Class tabanlı WebSocket yönetimi](https://www.starlette.dev/endpoints/#websocketendpoint).