> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# WebSocket API Proxy Oluşturma

> WebSocket proxy yönlendirme kılavuzu. HTTP API'ler ile tamamen aynı mantıkta çalışır, aynı API Proxy üzerinden hem HTTP hem WebSocket isteklerini yönlendirebilir ve protokol dönüşümü yapabilirsiniz (http→ws, https→wss)

## Genel Bakış

<Info>
  Apinizer WebSocket proxy'si, HTTP API'ler ile **tamamen aynı mantıkta** çalışır. Aynı API Proxy üzerinden hem HTTP hem WebSocket isteklerini yönlendirebilirsiniz.
</Info>

## Temel Kavramlar

<CardGroup cols={3}>
  <Card title="Backend URL" icon="server">
    Tek gerekli konfigürasyon. Backend WebSocket servisinizin adresini belirtir.

    **Örnek:** `http://backend:9090/ws/api`
  </Card>

  <Card title="Relative Path" icon="route">
    HTTP API'lerle aynı mantıkta çalışır. Wildcard kullanarak esnek yönlendirme yapabilirsiniz.

    **Örnekler:** `/websocket/*`, `/chat/*`
  </Card>

  <Card title="Protokol Dönüşümü" icon="arrows-rotate">
    Sistem otomatik olarak protokol dönüşümü yapar:

    * `http://` → `ws://`
    * `https://` → `wss://`
  </Card>
</CardGroup>

## Nasıl Çalışır?

### Birleşik Path Resolve Süreci

<AccordionGroup>
  <Accordion title="Path Resolve Örneği">
    Aşağıdaki örnek, bir WebSocket isteğinin nasıl işlendiğini gösterir:

    ```text theme={null}
    Gelen İstek: ws://host/api/websocket/rooms/123?user=john
    ├─ API Proxy Path: /api/websocket/*
    ├─ Backend URL: http://localhost:9090/ws/chat
    ├─ Protokol Dönüşümü: ws://localhost:9090/ws/chat
    ├─ Remaining Path: rooms/123
    └─ Final URL: ws://localhost:9090/ws/chat/rooms/123?user=john
    ```
  </Accordion>

  <Accordion title="Path Resolve Adımları">
    WebSocket isteklerinin işlenmesi aşağıdaki adımlardan geçer:

    <Steps>
      <Step title="Query Ayrımı">
        Request path'den query parametreleri ayrılır.
      </Step>

      <Step title="Path Normalizasyonu">
        Wildcard işaretleri (`*`) temizlenir.
      </Step>

      <Step title="Remaining Path Hesaplama">
        API proxy path'i çıkarılır ve kalan path belirlenir.
      </Step>

      <Step title="Protokol Dönüşümü">
        HTTP → WebSocket protokol dönüşümü yapılır (`http://` → `ws://`, `https://` → `wss://`).
      </Step>

      <Step title="URL Birleştirme">
        Backend URL + Remaining Path + Query parametreleri birleştirilerek final URL oluşturulur.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Pratik Örnekler

<CardGroup cols={3}>
  <Card title="HTTP ve WebSocket Birleşik API Proxy" icon="network-wired">
    Aynı API Proxy üzerinden hem HTTP hem WebSocket isteklerini yönlendirme:

    **Konfigürasyon:**

    * API Proxy: `/api/v1/*`
    * Backend URL: `http://localhost:8080/service`

    **Örnek İstekler:**

    * HTTP: `POST /api/v1/users` → `http://localhost:8080/service/users`
    * WebSocket: `ws://host/api/v1/chat` → `ws://localhost:8080/service/chat`
  </Card>

  <Card title="Güvenli Bağlantı (WSS)" icon="lock">
    HTTPS backend ile güvenli WebSocket bağlantısı:

    **Konfigürasyon:**

    * API Proxy: `/secure/*`
    * Backend URL: `https://api.example.com/ws`

    **Örnek İstek:**

    * WebSocket: `ws://host/secure/data` → `wss://api.example.com/ws/data`

    <Tip>
      HTTPS backend kullanıldığında otomatik olarak WSS (WebSocket Secure) protokolüne dönüştürülür.
    </Tip>
  </Card>

  <Card title="WebSocket Chat Uygulaması" icon="comments">
    Chat uygulaması için WebSocket proxy örneği:

    **Konfigürasyon:**

    * API Proxy: `/chat/*`
    * Backend URL: `http://chat-service:9090/websocket`

    **Örnek İstek:**

    * WebSocket: `ws://host/chat/room/123` → `ws://chat-service:9090/websocket/room/123`
  </Card>
</CardGroup>

## Sık Sorulan Sorular

<AccordionGroup>
  <Accordion title="Aynı API Proxy hem HTTP hem WebSocket destekleyebilir mi?">
    <Check>
      Evet! Aynı relative path altında her iki protokol de çalışır.
    </Check>

    Aynı API Proxy konfigürasyonu ile hem HTTP hem WebSocket isteklerini yönlendirebilirsiniz. Sistem gelen isteğin protokol tipini otomatik olarak algılar ve uygun şekilde işler.
  </Accordion>

  <Accordion title="Backend URL'de hangi protokol kullanmalıyım?">
    <Info>
      HTTP veya HTTPS kullanın. Sistem otomatik olarak WS/WSS'ye dönüştürür.
    </Info>

    Backend URL'de `http://` veya `https://` protokolünü kullanabilirsiniz. Apinizer, WebSocket istekleri için otomatik olarak:

    * `http://` → `ws://`
    * `https://` → `wss://`

    dönüşümünü yapar.
  </Accordion>

  <Accordion title="Query parametreleri korunur mu?">
    <Check>
      Evet, tüm query parametreleri backend'e aynen aktarılır.
    </Check>

    WebSocket isteklerindeki query parametreleri (`?param=value`) korunur ve backend'e aktarılır. Örneğin:

    ```
    ws://host/api/chat/room/123?user=john&token=abc
    ```

    Bu istek backend'e query parametreleriyle birlikte yönlendirilir.
  </Accordion>

  <Accordion title="Mevcut HTTP API'lerimi nasıl WebSocket destekli yapabilirim?">
    <Steps>
      <Step title="Ortam Ayarlarına Gidin">
        API Proxy'nin bağlı olduğu ortamın ayarlarına gidin.
      </Step>

      <Step title="WebSocket Desteğini Aktifleştirin">
        Ortam ayarlarından WebSocket desteğini aktif edin.
      </Step>

      <Step title="Deploy Edin">
        Değişiklikleri deploy edin. Artık mevcut HTTP API Proxy'niz WebSocket isteklerini de destekleyecektir.
      </Step>
    </Steps>

    <Tip>
      Mevcut HTTP API Proxy'leriniz için ek bir konfigürasyon gerekmez. Sadece ortam ayarlarından WebSocket desteğini aktif etmeniz yeterlidir.
    </Tip>
  </Accordion>
</AccordionGroup>
