Client-to-dbserver

From OuroDev
Revision as of 03:07, 12 May 2019 by Asuffield (talk | contribs)

The game client connects to port 7000 to find dbserver, and uses the common Network protocol.

When a QueueServer is in use, then it listens on port 7000 and clients will connect there. Otherwise, dbserver listens on port 7000 and accepts client connections.

dbserver game client interface

When a game client disconnects from dbserver, then:

  • if the client is not logged in, dbserver sends AS_QUIT_GAME to authserver with reason 1
  • if the client is logged in but does not have an entity loaded, dbserver sends AS_QUIT_GAME to authserver with reason 2
  • if the client is loaded onto a MapServer, then the MapServer is sent DBSERVER_FORCE_LOGOUT with reason -1
  • if the client is loaded but not connected to a MapServer, then an ACCOUNT_CLIENT_LOGOUT_ACCOUNT is sent to AccountServer and AS_QUIT_GAME is sent to authserver with reason 3

When dbserver receives a command on a link from a client, it first checks if the server is shutting down, and if it is then sends the client DBGAMESERVER_MSG with "ServerShutdown", and quits the client.

When quitting a client:

  • If QueueServer is not used, dbserver closes the link
  • If QueueServer is used, dbserver sends QUEUESERVER_SVR_REMOVECLIENT to QueueServer for this client

If the client is not logged in, then receiving any message other than DBGAMECLIENT_LOGIN will result in DBGAMESERVER_MSG with "NotLogged", and quits the client.

When QueueServer is used, the protocol is modified by prefixing headers onto packets so that QueueServer can proxy them. See Dbserver-protocols#queue for details.

Commands, client to server

DBGAMECLIENT_LOGIN

DBGAMECLIENT_CHOOSE_PLAYER

DBGAMECLIENT_MAKE_PLAYER_ONLINE

DBGAMECLIENT_DELETE_PLAYER

DBGAMECLIENT_GET_COSTUME

DBGAMECLIENT_GET_POWERSET_NAMES

DBGAMECLIENT_ACCOUNTSERVER_UNSECURE_CMD

DBGAMECLIENT_ACCOUNTSERVER_CHARCOUNT

DBGAMECLIENT_ACCOUNTSERVER_CATALOG

DBGAMECLIENT_ACCOUNTSERVER_LOYALTY_BUY

DBGAMECLIENT_ACCOUNTSERVER_LOYALTY_REFUND

DBGAMECLIENT_SHARD_XFER_TOKEN_REDEEM

DBGAMECLIENT_RENAME_CHARACTER

DBGAMECLIENT_RENAME_TOKEN_REDEEM

DBGAMECLIENT_RESEND_PLAYERS

DBGAMECLIENT_CHECK_NAME

DBGAMECLIENT_SLOT_TOKEN_REDEEM

DBGAMECLIENT_UNLOCK_CHARACTER

DBGAMECLIENT_QUITCLIENT

DBGAMECLIENT_SIGN_NDA

DBGAMECLIENT_GET_PLAYNC_AUTH_KEY

DBGAMECLIENT_CAN_START_STATIC_MAP

DBGAMECLIENT_CHOOSE_VISITING_PLAYER

Commands, server to client

DBGAMESERVER_SEND_PLAYERS

DBGAMESERVER_MSG

DBGAMESERVER_MAP_CONNECT

DBGAMESERVER_DELETE_OK

DBGAMESERVER_SEND_COSTUME

DBGAMESERVER_SEND_POWERSET_NAMES

DBGAMESERVER_ACCOUNTSERVER_CHARCOUNT

DBGAMESERVER_ACCOUNTSERVER_CATALOG

DBGAMESERVER_ACCOUNTSERVER_CLIENTAUTH

DBGAMESERVER_ACCOUNTSERVER_PLAYNC_AUTH_KEY

DBGAMESERVER_ACCOUNTSERVER_NOTIFYREQUEST

DBGAMESERVER_ACCOUNTSERVER_INVENTORY

DBGAMESERVER_ACCOUNTSERVER_UNAVAILABLE

DBGAMESERVER_CONPRINT

DBGAMESERVER_RENAME_RESPONSE

DBGAMESERVER_UNLOCK_CHARACTER_RESPONSE

DBGAMESERVER_CHECK_NAME_RESPONSE

DBGAMESERVER_LOGIN_DIALOG_RESPONSE

DBGAMESERVER_QUEUE_POSITION

DBGAMESERVER_CAN_START_STATIC_MAP_RESPONSE