クライアントからきたパラメータをそのままマッチング相手に送信します。
API PATH | /relay/simple/{id} |
---|---|
PATH Param | {id} 簡易マッチングで受け取ったidをセットしてください。 |
アクセストークンチェック | × |
メンテナンスチェック | × |
バリデーションチェック | × |
ヘルスチェック | 〇 ※定期的に{"cmd" : "hc"}を送信してください。 |
マッチ相手に送りたいパラメータを送信します。
No. | en | jp | 型 | 制約 | 備考 |
---|---|---|---|---|---|
1. | cmd | コマンド | String | 固定値[relay] | リレーコマンド |
2. | param | パラメータ | String | 必須 | マッチ相手に送りたいパラメータ |
{
"cmd" : "relay",
"param" : "String"
}
ゲームサーバに2ユーザが接続完了したタイミングでサーバから本コマンドが送信されます。
No. | en | jp | 型 | 制約 | 備考 |
---|---|---|---|---|---|
1. | cmd | コマンド | String | 固定値[ready] | 準備完了 |
2. | createRoomUserId | ルームを作ったユーザID | String | ||
3. | selfUserId | 自身のユーザID | String | ||
4. | matchUserId | マッチ相手のユーザID | String |
{
"cmd" : "ready",
"createRoomUserId" : "String",
"selfUserId" : "String",
"matchUserId" : "String"
}
クライアントからきたパラメータをそのままマッチング相手に送信します。
No. | en | jp | 型 | 制約 | 備考 |
---|---|---|---|---|---|
1. | cmd | コマンド | String | 固定値[relay] | リレーコマンド |
2. | param | パラメータ | String | マッチ相手に送りたいパラメータ |
{
"cmd" : "relay",
"param" : "String"
}
No. | Close Code | 説明 |
---|---|---|
1. | 3000 | ゲーム終了 |
2. | 3001 | マッチング相手が接続にこないケース 一定期間、コマンド準備完了を受け取らなかった場合は、タイムアウトとして必ず切断処理を実装してください。 |
API固有のClass/Dto/Modelはありません。
No. | API |
---|---|
1 | 簡易マッチング(1vs1) |
※メンテナンスの為、停止・エラーの場合があります。
var WS = null;
//仮の接続先です。
var URL = "ws://sample-ws-sample.semgame.net/relay/simple/{id}";
var TIMER_HC = null;
var TIMER_PLAYWAIT = null;
var CLOSE_END = 3000;
var CLOSE_MATCH_FAIL = 3001;
var PLAYWAIT_TIMEOUT_SEC = 10;
var PLAY_START_WAITTIME = null;
var HC_INTERVAL_SEC = 5000;
$(document).ready(function () {
$(document).on("click", "#cancel", (function() {
//対戦キャンセル時
WS.close(CLOSE_END);
}));
$(document).on("click", "#end", (function() {
//対戦終了時
WS.close(CLOSE_END);
}));
$(document).on("click", "#send", (function(){
//メッセージ送信時
WS.send(JSON.stringify({cmd: 'relay', param: '送信したい値'}));
}));
$(document).on("click", "#start", (function() {
//ゲーム開始時
var id = $('[name=id]').val();
URL = URL.replace('{id}', id);
WS = new WebSocket(URL);
WS.onopen = onOpen;
WS.onmessage = onMessage;
WS.onclose = onClose;
WS.onerror = onError;
TIMER_HC = setInterval(__timerHealthCheck, HC_INTERVAL_SEC);
TIMER_PLAYWAIT = setInterval(__timerPlayWait, 1000);
PLAY_START_WAITTIME = new Date().getTime();
}));
});
/**
* メッセージ受信処理
**/
function onMessage(e) {
var r = JSON.parse(e.data);
if (r.cmd == "ready") {
//準備が完了しました。
clearInterval(TIMER_PLAYWAIT);
} else if (r.cmd == "relay") {
//メッセージ受信
} else {
WS.close();
}
}
function onOpen(event) {
//何かあれば適宜実装
}
function onError(event) {
//何かあれば適宜実装
}
function onClose(event) {
if (event.code == CLOSE_END) {
//マッチングを終了しました。
} else if (event.code == CLOSE_MATCH_FAIL) {
//タイムアウト:相手が接続しませんでした。
}
}
function __timerHealthCheck() {
WS.send(JSON.stringify({cmd: 'hc'}));
}
function __timerPlayWait() {
var elapseSec = (new Date().getTime() - PLAY_START_WAITTIME) / 1000;
if (elapseSec > PLAYWAIT_TIMEOUT_SEC) {
WS.close(CLOSE_MATCH_FAIL);
}
}
※各CloseCodeとヘルスチェックは必ず実装してください。
※あくまでサンプルです。このままでは動きません。
本サービスは、株式会社スタジオセムが運営しているサービスとなります。
https://studiosem.co.jp/