メインコンテンツまでスキップ
バージョン: 4.6.1

APIリファレンス

NetFUNNEL JavaScriptエージェント関数、コールバック、応答形式の完全な参照です。


目次


基本コントロール関数

基本コントロールはサービスの進入速度を制限します。開始関数が呼び出されるとキーが発行され、待合室が表示されます。停止関数が呼び出されるとキーが返却されます。

nfStart

目的: 動作開始時にキーを発行し、待合室を表示します。

関数シグネチャ:

nfStart(keys, callback)

パラメータ:

パラメータタイプ説明必須
keysObjectプロジェクトおよびセグメントキーを含むオブジェクトはい
keys.projectKeyStringコンソールの基本コントロールプロジェクトキーはい
keys.segmentKeyStringコンソールの基本コントロールセグメントキーはい
callbackFunctionVWRイベントを処理するカスタムコールバックはい

戻り値: undefined

例:

nfStart({
projectKey: "service_1",
segmentKey: "segKey_8612"
}, function(response) {
// 応答処理 - 詳細についてはコールバック関数セクションを参照
if (response.status === 'Success') {
// ロジック進行
console.log('Entry granted!');
}
});

コールバック処理: 詳細な応答処理については、コールバック関数セクションを参照してください。

nfStop

目的: 進入が完了した後にキーを返却します。

関数シグネチャ:

nfStop(keys)

パラメータ:

パラメータタイプ説明必須
keysObjectプロジェクトおよびセグメントキーを含むオブジェクトはい
keys.projectKeyStringコンソールの基本コントロールプロジェクトキーはい
keys.segmentKeyStringコンソールの基本コントロールセグメントキーはい

戻り値: undefined

例:

nfStop({
projectKey: "service_1",
segmentKey: "segKey_8612"
});
自動返却タイムアウト

停止関数を実行しない場合、セグメントタイムアウト設定に従ってキーが自動的に返却されます (デフォルトタイムアウト: 20秒)。


区間コントロール関数

区間コントロールは特定のアプリケーション区間の同時ユーザー数を固定値で維持します。開始関数が呼び出されるとキーが発行されます。停止関数が呼び出されるまでユーザーはアクティブな区間にいるものと見なされ、キューの次のユーザーは許可されません。

nfStartSection

目的: 区間コントロールのためにキーを発行し、待合室を表示します。

関数シグネチャ:

nfStartSection(keys, callback)

パラメータ:

パラメータタイプ説明必須
keysObjectプロジェクトおよびセグメントキーを含むオブジェクトはい
keys.projectKeyStringコンソールの区間コントロールプロジェクトキーはい
keys.segmentKeyStringコンソールの区間コントロールセグメントキーはい
callbackFunctionVWRイベントを処理するカスタムコールバックはい

戻り値: undefined

例:

nfStartSection({
projectKey: "service_1",
segmentKey: "section_segKey_1234"
}, function(response) {
// 応答処理 - 詳細についてはコールバック関数セクションを参照
if (response.status === 'Success') {
// ユーザーが区間に進入
console.log('Section entry granted!');
}
});

コールバック処理: 詳細な応答処理については、コールバック関数セクションを参照してください。

nfStopSection

目的: ユーザーがアクティブな区間を終了するときにキーを返却します。

関数シグネチャ:

nfStopSection(keys)

パラメータ:

パラメータタイプ説明必須
keysObjectプロジェクトおよびセグメントキーを含むオブジェクトはい
keys.projectKeyStringコンソールの区間コントロールプロジェクトキーはい
keys.segmentKeyStringコンソールの区間コントロールセグメントキーはい

戻り値: undefined

例:

nfStopSection({
projectKey: "service_1",
segmentKey: "section_segKey_1234"
});
区間コントロール動作

停止関数を実行しない場合、ユーザーがアクティブな区間に継続して留まっているものと見なされ、次のユーザーの許可が遅延する可能性があります。


コールバック関数

基本/区間コントロール開始関数(nfStartおよびnfStartSection)のコールバック関数(2番目のパラメータ)でNetFUNNELサーバーの応答を受信できます。応答結果に基づいてさまざまな処理ロジックを実行できます。

必須状態処理

次の3つの状態を必ず処理する必要があります:

  • Success: 進入許可またはバイパスモード
  • Error: システムエラー発生
  • NetworkError: ネットワーク接続問題

サンプルコールバック実装

function nfCallback(response) {
const { status, statusCode, message } = response;

switch (status) {
case 'Success':
// 進入またはバイパス受信 — 元のサービスロジックを実行
console.log('User can proceed!');
// 例: ページに移動、関数実行、API呼び出し
break;

case 'Error':
// システムエラー発生 — スムーズなUXのために元のロジックを実行
console.log(`System error: ${message}`);
// 例: ページに移動、関数実行、API呼び出し
break;

case 'NetworkError':
// ネットワークエラー発生 — 再帰呼び出しで再試行
console.log(`Network error: ${message}`);
// NetFUNNEL開始関数を再試行するための再帰呼び出し
nfStart(keys, nfCallback); // または nfStartSection(keys, nfCallback)
break;

case 'Block':
// 進入状態がBlock — ユーザーに通知
console.log('Access blocked');
// 例: alert("This page is blocked for entry.");
break;

case 'IpBlock':
// 繰り返しリクエストによるブロック
console.log('IP blocked');
// 例: alert("You have been blocked due to repeated requests.");
break;

case 'Close':
// ユーザーが待合室で閉じる/キャンセルをクリック
console.log('Waiting canceled by user');
// 例: alert("Waiting has been canceled.");
break;

default:
console.log(`[NF] status: ${status}, code: ${statusCode}, message: ${message}`);
}
}

応答オブジェクトスキーマ

コールバックに渡されるresponseオブジェクトは次のフィールドを含みます:

フィールドタイプ例 / 説明
statusStringSuccess / Error / NetworkError / Block / IpBlock / Close
statusCodeNumber200, 201, 300, 303, 500, 1001, 1002, 301, 302, 49xなど
messageStringSuccess, Bypass, Express, Server Error, Network Timeoutなど
keyString発行された進入キー (ID)

例の応答オブジェクト:

// Success応答
{
status: "Success",
statusCode: 200,
message: "Success",
key: "key_12345"
}

// Bypass応答
{
status: "Success",
statusCode: 300,
message: "Bypass",
key: "key_12345"
}

// ネットワークエラー応答
{
status: "NetworkError",
statusCode: 1002,
message: "Network Timeout",
key: "key_12345"
}

ステータスコード参照

可能なすべてのステータスコードとその意味の完全な参照です。

状態StatusCodeMessage説明
Success200Successキューを正常に通過してサービスに進入
300Bypassサブスクリプション/ライセンス期限切れ、プロジェクト/セグメント無効化、data-nf-error-bypass=true
303ExpressExpress進入成功
Error500Server Error存在しないキー使用、待機中セグメント削除、サーバーエラー
NetworkError1001Network Not Connectedネットワーク接続ブロック
1002Network Timeoutネットワーク遅延、不正な待合室HTML、サーバーダウン
Block301Blockセグメントがブロック状態
IpBlock302Macro Blockブラックリスト、BotManager Basic有効化
Close499Canceled Waiting Roomデフォルト待合室でキャンセル/閉じるボタンをクリック
498Closed Blocking Roomブロッキングルームを閉じる
497Closed Macro Blocking Roomマクロブロッキングルームを閉じる
496Closed PreWaiting Room事前待合室を閉じる
495Closed PostWaiting Room事後待合室を閉じる

ベストプラクティス

関数の可用性確認

NetFUNNEL関数を呼び出す前に常に使用可能か確認してください:

if (typeof window.nfStart === 'function') {
nfStart(keys, callback);
} else {
// 代替ロジック
console.log('NetFUNNEL not available, proceeding without protection');
performOriginalLogic();
}

キー一致

開始および停止関数は同一のキーを使用する必要があります:

const keys = { 
projectKey: 'service_1',
segmentKey: 'segKey_8612'
};

// 開始
nfStart(keys, callback);

// 停止 (同一のキーを使用する必要がある)
nfStop(keys);

キー返却戦略

ユーザーが正常に進入した場合にのみキーを返却してください:

function performAction() {
nfStart(keys, function(response) {
if (response.status === 'Success') {
doSomething();
}
});
}

// ページロード時にキー返却 (ページナビゲーションケース用)
window.addEventListener('load', () => {
if (typeof window.nfStop === 'function') {
nfStop(keys);
}
});

一般的な統合パターン

ボタンクリック保護

document.getElementById('login-button').addEventListener('click', () => {
if (typeof window.nfStart === 'function') {
nfStart({
projectKey: 'service_1',
segmentKey: 'login_segKey'
}, function(response) {
// 詳細な応答処理についてはコールバック関数セクションを参照
if (response.status === 'Success') {
performLogin();
} else {
handleError(response);
}
});
} else {
performLogin(); // 代替
}
});

function performLogin() {
// ログインロジックをここに記述
fetch('/api/login', { /* ... */ })
.then(() => {
// ログイン成功後にキー返却
if (typeof window.nfStop === 'function') {
nfStop({
projectKey: 'service_1',
segmentKey: 'login_segKey'
});
}
})
.catch(() => {
// エラー発生時にもキー返却
if (typeof window.nfStop === 'function') {
nfStop({
projectKey: 'service_1',
segmentKey: 'login_segKey'
});
}
});
}

再帰呼び出しを使用したNetworkError処理

NetworkError状態の場合、NetFUNNEL開始関数を再試行するために再帰呼び出しを実装する必要があります。これにより、ネットワーク問題が一時的な場合により良いユーザー体験を保証できます。

// 再帰呼び出しを使用した基本コントロールNetworkError処理
function startWithRetry(keys) {
nfStart(keys, function(response) {
switch (response.status) {
case 'Success':
// 元のロジック進行
performAction();
break;

case 'NetworkError':
console.log('Network error, retrying...');
// 再試行のための再帰呼び出し
startWithRetry(keys);
break;

case 'Error':
console.log('System error, proceeding without protection');
performAction();
break;

default:
console.log(`Unexpected status: ${response.status}`);
performAction();
}
});
}

// 再帰呼び出しを使用した区間コントロールNetworkError処理
function startSectionWithRetry(keys) {
nfStartSection(keys, function(response) {
switch (response.status) {
case 'Success':
// ユーザーが区間に進入
showCheckoutForm();
break;

case 'NetworkError':
console.log('Network error, retrying section entry...');
// 再試行のための再帰呼び出し
startSectionWithRetry(keys);
break;

case 'Error':
console.log('System error, proceeding without section protection');
showCheckoutForm();
break;

default:
console.log(`Unexpected status: ${response.status}`);
showCheckoutForm();
}
});
}

// 使用例
const keys = {
projectKey: 'service_1',
segmentKey: 'segKey_8612'
};

// 再試行ロジックとともに開始
startWithRetry(keys);

function performAction() {
// ビジネスロジックをここに記述
console.log('Performing protected action...');

// 動作完了時にキー返却
nfStop(keys);
}

function showCheckoutForm() {
// チェックアウトフォームロジックをここに記述
console.log('Showing checkout form...');
}

マルチステップ区間コントロール

// 区間開始 (例: チェックアウトプロセス)
function startCheckout() {
nfStartSection({
projectKey: 'service_1',
segmentKey: 'checkout_segKey'
}, function(response) {
// 詳細な応答処理についてはコールバック関数セクションを参照
if (response.status === 'Success') {
showCheckoutForm();
}
});
}

// 区間終了 (例: 決済完了後)
function completeCheckout() {
// チェックアウト完了ロジック
processPayment()
.then(() => {
// 成功した完了後にキー返却
nfStopSection({
projectKey: 'service_1',
segmentKey: 'checkout_segKey'
});
});
}

関連ドキュメント