API Reference of GS2-Gateway SDK for Game Engine

Specifications of models and API references for GS2-SDK for Game Engine

Model

EzWebSocketSession

WebSocketSession

A WebSocket session is a persistent connection between a GS2 server and a client for real-time bidirectional communication. The client registers a user ID as an identifier to the server.

TypeConditionRequireDefaultLimitationDescription
connectionIdstring
~ 128 charsconnection ID
namespaceNamestring
~ 128 charsNamespace name
userIdstring
~ 128 charsUser Id

setUserId


Methods

setUserId

Set user ID to receive push notifications from the server

Request

TypeConditionRequireDefaultLimitationDescription
namespaceNamestring
~ 128 charsNamespace name
accessTokenstring
~ 128 charsAccess token
allowConcurrentAccessbool
trueAllow connections from different clients at the same time
sessionIdstring{allowConcurrentAccess} == false~ 128 charsSet this value to prevent rejection of connection if an existing connection exists and the session ID is the same
allowConcurrentAccess is false, thenenabled

Result

TypeDescription
itemEzWebSocketSessionUpdated Websocket session

Implementation Example

    var domain = gs2.Gateway.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).WebSocketSession(
    );
    var result = await domain.SetUserIdAsync(
        allowConcurrentAccess: null,
        sessionId: null
    );
    var item = await result.ModelAsync();
    var domain = gs2.Gateway.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).WebSocketSession(
    );
    var future = domain.SetUserIdFuture(
        allowConcurrentAccess: null,
        sessionId: null
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.ModelFuture();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;
    const auto Domain = Gs2->Gateway->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->WebSocketSession(
    );
    const auto Future = Domain->SetUserId(
        // allowConcurrentAccess
        // sessionId
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (Future2->GetTask().IsError())
    {
        return Future2->GetTask().Error();
    }
    const auto Result = Future2->GetTask().Result();