107 lines
3.3 KiB
Plaintext
107 lines
3.3 KiB
Plaintext
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Mirror;
|
|
using UnityEngine;
|
|
|
|
/*
|
|
Documentation: https://mirror-networking.gitbook.io/docs/components/network-authenticators
|
|
API Reference: https://mirror-networking.com/docs/api/Mirror.NetworkAuthenticator.html
|
|
*/
|
|
|
|
public class #SCRIPTNAME# : NetworkAuthenticator
|
|
{
|
|
#region Messages
|
|
|
|
public struct AuthRequestMessage : NetworkMessage { }
|
|
|
|
public struct AuthResponseMessage : NetworkMessage { }
|
|
|
|
#endregion
|
|
|
|
#region Server
|
|
|
|
/// <summary>
|
|
/// Called on server from StartServer to initialize the Authenticator
|
|
/// <para>Server message handlers should be registered in this method.</para>
|
|
/// </summary>
|
|
public override void OnStartServer()
|
|
{
|
|
// register a handler for the authentication request we expect from client
|
|
NetworkServer.RegisterHandler<AuthRequestMessage>(OnAuthRequestMessage, false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called on server from OnServerConnectInternal when a client needs to authenticate
|
|
/// </summary>
|
|
/// <param name="conn">Connection to client.</param>
|
|
public override void OnServerAuthenticate(NetworkConnectionToClient conn) { }
|
|
|
|
/// <summary>
|
|
/// Called on server when the client's AuthRequestMessage arrives
|
|
/// </summary>
|
|
/// <param name="conn">Connection to client.</param>
|
|
/// <param name="msg">The message payload</param>
|
|
public void OnAuthRequestMessage(NetworkConnectionToClient conn, AuthRequestMessage msg)
|
|
{
|
|
AuthResponseMessage authResponseMessage = new AuthResponseMessage();
|
|
conn.Send(authResponseMessage);
|
|
|
|
// Accept the successful authentication
|
|
ServerAccept(conn);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called when server stops, used to unregister message handlers if needed.
|
|
/// </summary>
|
|
public override void OnStopServer()
|
|
{
|
|
// Unregister the handler for the authentication request
|
|
NetworkServer.UnregisterHandler<AuthRequestMessage>();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Client
|
|
|
|
/// <summary>
|
|
/// Called on client from StartClient to initialize the Authenticator
|
|
/// <para>Client message handlers should be registered in this method.</para>
|
|
/// </summary>
|
|
public override void OnStartClient()
|
|
{
|
|
// register a handler for the authentication response we expect from server
|
|
NetworkClient.RegisterHandler<AuthResponseMessage>(OnAuthResponseMessage, false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called on client from OnClientConnectInternal when a client needs to authenticate
|
|
/// </summary>
|
|
public override void OnClientAuthenticate()
|
|
{
|
|
AuthRequestMessage authRequestMessage = new AuthRequestMessage();
|
|
NetworkClient.Send(authRequestMessage);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called on client when the server's AuthResponseMessage arrives
|
|
/// </summary>
|
|
/// <param name="msg">The message payload</param>
|
|
public void OnAuthResponseMessage(AuthResponseMessage msg)
|
|
{
|
|
// Authentication has been accepted
|
|
ClientAccept();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called when client stops, used to unregister message handlers if needed.
|
|
/// </summary>
|
|
public override void OnStopClient()
|
|
{
|
|
// Unregister the handler for the authentication response
|
|
NetworkClient.UnregisterHandler<AuthResponseMessage>();
|
|
}
|
|
|
|
#endregion
|
|
}
|