SDK Web

Satu file JavaScript tanpa dependensi untuk game HTML5, website, dan server Node.js.

Komentar kode dan nama API tetap dalam bahasa Inggris agar sesuai dengan SDK.

Di halaman ini

Persyaratan#

  • Versi terbaru Chrome, Edge, Firefox, dan Safari (desktop dan mobile), atau Node.js 18+.
  • Halaman harus disajikan lewat HTTPS (atau localhost): API mewajibkan HTTPS, dan Web Crypto, yang dipakai untuk memverifikasi remote config, hanya tersedia di halaman yang aman.

Instalasi#

Muat dari server MAJACLOUD Anda, yang menyajikannya dengan header CORS:

HTML
<script src="https://majacloud.majanite.com/downloads/majacloud-web-1.0.0.js"></script>
<script type="module">
  const mc = Majacloud.createClient({ baseUrl: 'https://majacloud.majanite.com', projectId: '<project id>', clientKey: 'pk_live_…' });
</script>

Atau salin majacloud.js ke project Anda:

JavaScript
// Bundlers (Vite, webpack…): copy majacloud.js into your project
import Majacloud from './majacloud.js';

// Node.js 18+
const Majacloud = require('./majacloud.js');

Buat client#

Hanya baseUrl, projectId, dan clientKey yang wajib diisi.

JavaScript
const mc = Majacloud.createClient({
  baseUrl: 'https://majacloud.majanite.com',      // your MAJACLOUD address
  projectId: '<project id>',
  clientKey: 'pk_live_…',     // public, safe in the browser
  configPublicKey: PEM,       // optional: pins Remote Config verification
  storage: 'memory',          // optional: 'memory' or { get, set, remove }; default localStorage
  timeoutMs: 15000,           // optional
  maxRetries: 2,              // optional
});

Hasil#

Setiap panggilan menghasilkan { ok: true, value } atau { ok: false, error } dan tidak pernah reject. value adalah body respons REST tanpa ok, dengan field snake_case yang sama seperti di referensi REST.

error berisi code, message, status, requestId, retryAfter, details, dan retryable.

Event#

Berlangganan dengan on(); fungsi ini mengembalikan fungsi untuk berhenti berlangganan.

JavaScript
const stop = mc.auth.on('playerChanged', (player) => {
  document.querySelector('#name').textContent = player ? player.display_name : '';
});
mc.auth.on('sessionExpired', () => showSignIn());
mc.remoteConfig.on('updated', () => applyBalance());

stop(); // every on() returns an unsubscribe function

Leaderboard di website Anda#

Membaca leaderboard tidak perlu login, jadi website bisa menampilkan pemain teratas hanya dengan client key publik:

HTML
<ol id="top-players"></ol>
<script src="https://majacloud.majanite.com/downloads/majacloud-web-1.0.0.js"></script>
<script>
  const mc = Majacloud.createClient({ baseUrl: 'https://majacloud.majanite.com', projectId: '<project id>', clientKey: 'pk_live_…' });
  mc.leaderboards.getTop('coins', { limit: 10 }).then((top) => {
    if (!top.ok) return;
    document.getElementById('top-players').innerHTML = '';
    for (const entry of top.value.entries) {
      const li = document.createElement('li');
      li.textContent = `${entry.player_name} — ${entry.score}`;
      document.getElementById('top-players').append(li);
    }
  });
</script>

Beberapa tab#

Sesi disimpan di localStorage dan dipakai bersama oleh semua tab situs Anda. Refresh token berganti, jadi tab bergiliran memperbaruinya (Web Locks) dan saling memakai token baru: pemain tidak akan dikeluarkan hanya karena membuka tab kedua.

Sisi server dengan secret key#

Di server Node.js Anda sendiri, buat client dengan secretKey sebagai ganti clientKey untuk memakai server.getPlayer() dan server.submitScore(). SDK menolak secret key di browser.

JavaScript
// Node.js on your own server only: the secret key never goes to a browser or game build
const Majacloud = require('./majacloud.js');
const admin = Majacloud.createClient({
  baseUrl: 'https://majacloud.majanite.com',
  projectId: process.env.MAJACLOUD_PROJECT_ID,
  secretKey: process.env.MAJACLOUD_SECRET_KEY,
});

const player = await admin.server.getPlayer('player_3f9c…');
await admin.server.submitScore('coins', 'player_3f9c…', 980);

mc.request(method, path, { body, auth }) memanggil endpoint apa pun tanpa helper, misalnya mc.request('GET', '/wallet', { auth: 'player' }).

Cari judul halaman, subjudul, dan teks.

↑↓ untuk berpindah ↵ untuk membuka Esc untuk menutup