Giter Site home page Giter Site logo

Comments (2)

IanGallacher avatar IanGallacher commented on August 12, 2024 1

We encountered this issue as well.

Our current workaround is to avoid using the PlayFabSDK and directly make API calls via axios.

Example snippet:

const PLAYFAB_URL = `https://${PlayFab.settings.titleId}.playfabapi.com`;
export class PlayfabTitleRequestSession {
  private _entityToken: string | undefined;
  private requestTitleEntityToken = (): Promise<
    PlayFabAuthenticationModels.GetEntityTokenResponse
  > =>
    new Promise((resolve, reject) => {
      axios
        .post(
          `${PLAYFAB_URL}/Authentication/GetEntityToken`,
          {
            Id: '231',
            Type: 'title',
          },
          {
            headers: {
              'X-SecretKey': PlayFab.settings.developerSecretKey,
            },
          }
        )
        .then(response => resolve(response?.data?.data))
        .catch(err => reject(err));
    });

  private titleEntityToken = async (): Promise<string> => {
    if (this._entityToken) return this._entityToken;
    const entityToken = (await this.requestTitleEntityToken()).EntityToken;
    this._entityToken = entityToken || '';
    return this._entityToken;
  };

  private playfabRequest = async <T>(endpoint: string, parameters: object): Promise<T> => {
    const entityToken = await this.titleEntityToken();
    return new Promise((resolve, reject) => {
      axios
        .post(endpoint, parameters, {
          headers: {
            'X-EntityToken': entityToken,
          },
        })
        .then(response => resolve(response?.data?.data))
        .catch(err => reject(err));
    });
  };

  startServer = async (
    sessionId: string,
    sessionCookie: SessionCookieType,
    buildId: string,
    preferredRegions = ['EastUs']
  ) =>
    this.playfabRequest<PlayFabMultiplayerModels.RequestMultiplayerServerResponse>(
      `${PLAYFAB_URL}/MultiplayerServer/RequestMultiplayerServer`,
      {
        BuildId: buildId,
        PreferredRegions: preferredRegions,
        SessionCookie: JSON.stringify(sessionCookie),
        SessionId: sessionId,
      }
    );

  shutdownServer = async (sessionId: string) =>
    this.playfabRequest<PlayFabMultiplayerModels.EmptyResponse>(
      `${PLAYFAB_URL}/MultiplayerServer/ShutdownMultiplayerServer`,
      {
        SessionId: sessionId,
      }
    );
}

from nodesdk.

GGAlanSmithee avatar GGAlanSmithee commented on August 12, 2024

Thanks for your answer @IanGallacher I totally missed it, but I ended up doing the same. I consider publishing it, but not sure I want to take on the maintenance burden.

from nodesdk.

Related Issues (18)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.