96 lines
No EOL
2.4 KiB
C#
96 lines
No EOL
2.4 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using LiteNetLib;
|
|
using LiteNetLib.Utils;
|
|
using UnityEngine;
|
|
using UnityEngine.PlayerLoop;
|
|
|
|
namespace _Hub.Scripts.Network
|
|
{
|
|
public class NetworkClient : MonoBehaviour, INetEventListener
|
|
{
|
|
public static NetworkClient Instance { get; private set; }
|
|
|
|
#region Network
|
|
|
|
private NetManager _netManager;
|
|
private NetPeer _netPeer;
|
|
private NetDataWriter _netDataWriter;
|
|
|
|
#endregion
|
|
|
|
private void Awake()
|
|
{
|
|
if (Instance != null && Instance != this)
|
|
{
|
|
Destroy(gameObject);
|
|
return;
|
|
}
|
|
|
|
Instance = this;
|
|
DontDestroyOnLoad(gameObject);
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
private void Init()
|
|
{
|
|
_netManager = new NetManager(this)
|
|
{
|
|
DisconnectTimeout = 100000
|
|
};
|
|
_netManager.Start();
|
|
}
|
|
|
|
public void Connect()
|
|
{
|
|
_netManager.Connect("localhost", 9050, "");
|
|
}
|
|
|
|
public void SendServer(string data)
|
|
{
|
|
var bytes = Encoding.UTF8.GetBytes(data);
|
|
_netPeer.Send(bytes, DeliveryMethod.ReliableOrdered);
|
|
}
|
|
|
|
public void OnPeerConnected(NetPeer peer)
|
|
{
|
|
Debug.Log("We connect to server at " + peer.Address);
|
|
_netPeer = peer;
|
|
}
|
|
|
|
public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo)
|
|
{
|
|
Debug.Log("Lost Connection: " + disconnectInfo.Reason);
|
|
}
|
|
|
|
public void OnNetworkError(IPEndPoint endPoint, SocketError socketError)
|
|
{
|
|
}
|
|
|
|
public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, byte channelNumber,
|
|
DeliveryMethod deliveryMethod)
|
|
{
|
|
var data = Encoding.UTF8.GetString(reader.RawData).Replace("\0", "");
|
|
Debug.Log($"Data received '{data}'");
|
|
}
|
|
|
|
public void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader,
|
|
UnconnectedMessageType messageType)
|
|
{
|
|
}
|
|
|
|
public void OnNetworkLatencyUpdate(NetPeer peer, int latency)
|
|
{
|
|
}
|
|
|
|
public void OnConnectionRequest(ConnectionRequest request)
|
|
{
|
|
}
|
|
}
|
|
} |