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

# Cara Menggunakan accountSubscribe

> Alirkan pembaruan akun Solana secara real-time dengan `accountSubscribe`. Pantau perubahan saldo, modifikasi data, dan pembaruan lamport melalui WebSocket.

## Apa Itu `accountSubscribe`?

WebSocket Solana mendukung metode yang memungkinkan Anda berlangganan ke suatu akun dan menerima notifikasi melalui koneksi WebSocket setiap kali terjadi perubahan pada lamport atau data yang terkait dengan kunci publik akun yang cocok.

Metode ini sepenuhnya sesuai dengan [spesifikasi API WSS Solana](https://solana.com/docs/rpc/websocket#accountsubscribe).

## Parameter

* `string`: kunci publik akun, dikirim dalam format `base58` (wajib)
* `object`: objek opsional yang digunakan untuk meneruskan parameter tambahan
* `encoding`: menentukan format data yang dikembalikan dalam `AccountNotification`. Nilai yang didukung: `base58` (default), `base64`, `base64+zstd`, `jsonParsed`
* `commitment`: menentukan tingkat komitmen untuk transaksi. Nilai yang didukung: `finalized` (default), `confirmed`, `processed`
* `notifyOn`: **Tidak digunakan lagi — tidak beroperasi sejak Agave 4.2.** Menetapkan `notifyOn` tidak memberikan efek apa pun. Kolom ini akan dihapus di kemudian hari.

## Contoh Berlangganan Akun

Dalam contoh ini, kita berlangganan perubahan akun untuk akun `SysvarC1ock11111111111111111111111111111111`.

Kita akan melihat pembaruan setiap kali terjadi perubahan pada data akun atau lamport akun ini.

Hal ini sering terjadi pada akun khusus ini karena `slot` dan `unixTimestamp` sama-sama merupakan bagian dari data akun yang dikembalikan.

<Tip>
  `accountSubscribe` terfilter dari Helius tersedia pada [endpoint](https://www.helius.dev/docs/api-reference/endpoints) `wss://mainnet.helius-rpc.com` dan `wss://devnet.helius-rpc.com` terpadu yang sama seperti metode langganan WebSocket lainnya.
</Tip>

<CodeGroup>
  ```javascript theme={"system"}
  const WebSocket = require('ws');

  // Create a WebSocket connection
  const ws = new WebSocket('wss://mainnet.helius-rpc.com?api-key=<API_KEY>');

  // Function to send a request to the WebSocket server
  function sendRequest(ws) {
      const request = {
          jsonrpc: "2.0",
          id: 420,
          method: "accountSubscribe",
          params: [
              "SysvarC1ock11111111111111111111111111111111", // pubkey of account we want to subscribe to
              {
                  encoding: "jsonParsed", // base58, base64, base64+zstd, jsonParsed
                  commitment: "confirmed", // defaults to finalized if unset
              }
          ]
      };
      ws.send(JSON.stringify(request));
  }

  // Function to send a ping to the WebSocket server
  function startPing(ws) {
      setInterval(() => {
          if (ws.readyState === WebSocket.OPEN) {
              ws.ping();
              console.log('Ping sent');
          }
      }, 30000); // Ping every 30 seconds
  }

  // Define WebSocket event handlers

  ws.on('open', function open() {
      console.log('WebSocket is open');
      sendRequest(ws);  // Send a request once the WebSocket is open
      startPing(ws);    // Start sending pings
  });

  ws.on('message', function incoming(data) {
      const messageStr = data.toString('utf8');
      try {
          const messageObj = JSON.parse(messageStr);
          console.log('Received:', messageObj);
      } catch (e) {
          console.error('Failed to parse JSON:', e);
      }
  });

  ws.on('error', function error(err) {
      console.error('WebSocket error:', err);
  });

  ws.on('close', function close() {
      console.log('WebSocket is closed');
  });
  ```
</CodeGroup>

### Contoh Notifikasi

<CodeGroup>
  ```json theme={"system"}
  {
      "jsonrpc": "2.0",
      "method": "accountNotification",
      "params": {
          "subscription": 237508762798666,
          "result": {
              "context": {"slot": 235781083},
              "value": {
                  "lamports": 1169280,
                  "data": "BvEhEb6hixL3QPn41gHcyi2CDGKt381jbNKFFCQr6XDTzCTXCuSUG9D",
                  "owner": "Sysvar1111111111111111111111111111111111111",
                  "executable": false,
                  "rentEpoch": 361,
                  "space": 40
              }
          }
      }
  }
  ```
</CodeGroup>
