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.
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:
<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:
// 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.
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.
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 functionLeaderboard di website Anda#
Membaca leaderboard tidak perlu login, jadi website bisa menampilkan pemain teratas hanya dengan client key publik:
<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.
// 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' }).