> ## 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.

# Cách sử dụng accountSubscribe

> Truyền trực tiếp các cập nhật tài khoản Solana theo thời gian thực bằng `accountSubscribe`. Theo dõi các thay đổi về số dư, dữ liệu và lamport qua WebSocket.

## `accountSubscribe` là gì?

WebSocket của Solana hỗ trợ một phương thức cho phép bạn đăng ký theo dõi một tài khoản và nhận thông báo qua kết nối WebSocket mỗi khi có thay đổi đối với lamport hoặc dữ liệu liên kết với khóa công khai của tài khoản tương ứng.

Phương thức này tuân thủ trực tiếp [đặc tả API WSS của Solana](https://solana.com/docs/rpc/websocket#accountsubscribe).

## Tham số

* `string`: khóa công khai của tài khoản, được gửi ở định dạng `base58` (bắt buộc)
* `object`: đối tượng tùy chọn dùng để truyền các tham số bổ sung
* `encoding`: chỉ định định dạng của dữ liệu được trả về trong `AccountNotification`. Các giá trị được hỗ trợ: `base58` (mặc định), `base64`, `base64+zstd`, `jsonParsed`
* `commitment`: xác định mức cam kết cho giao dịch. Các giá trị được hỗ trợ: `finalized` (mặc định), `confirmed`, `processed`
* `notifyOn`: **Không còn được dùng — không thực hiện thao tác nào kể từ Agave 4.2.** Việc thiết lập `notifyOn` không có tác dụng. Trường này sẽ bị xóa trong tương lai.

## Ví dụ đăng ký theo dõi tài khoản

Trong ví dụ này, chúng ta đăng ký theo dõi các thay đổi đối với tài khoản `SysvarC1ock11111111111111111111111111111111`.

Chúng ta sẽ nhận được bản cập nhật mỗi khi dữ liệu tài khoản hoặc số lamport của tài khoản này thay đổi.

Đối với tài khoản cụ thể này, việc cập nhật diễn ra thường xuyên vì cả `slot` và `unixTimestamp` đều là một phần của dữ liệu tài khoản được trả về.

<Tip>
  `accountSubscribe` có bộ lọc của Helius được cung cấp trên cùng các [điểm cuối](https://www.helius.dev/docs/api-reference/endpoints) `wss://mainnet.helius-rpc.com` và `wss://devnet.helius-rpc.com` hợp nhất như các phương thức đăng ký WebSocket còn lại.
</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>

### Thông báo mẫu

<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>
