You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.3 KiB
Plaintext
107 lines
3.3 KiB
Plaintext
2 months ago
|
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
|
||
|
}
|