using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; namespace Networking.Server { [CreateAssetMenu(menuName = "Major Project/Networking/ServerObject", order = 150)] public class ServerObject : ScriptableObject { #region Inspector Fields [Header("Server Settings")] [SerializeField] private int Port; [SerializeField] private bool useWebSockets; [SerializeField] private int webPort; [Header("References")] [SerializeField] private ClientList LoginHandler; #endregion Inspector Fields #region ReadOnly Variables public NetworkServerSimple server { get; private set;} private NetworkServerSimple webServer; #endregion ReadOnly Variables public void StartServer() { LoginHandler.ConnectedClients = new List(); LoginHandler.DisconnectedClients = new List(); //Debug.Log("Starting Server on " + port); server = new NetworkServerSimple(); server.Configure(TransportConfigure.CreateConfigure(),32); if (useWebSockets) { webServer = new NetworkServerSimple(); webServer.useWebSockets = true; webServer.Configure(TransportConfigure.CreateConfigure(), 32); } LoginHandler.SetUp(this); server.Listen(Port); webServer.Listen(webPort); } public void ServerClose() { if (server != null) server.Stop(); if (webServer != null) webServer.Stop(); } public void ServerUpdate() { if (server != null) server.Update(); if (webServer != null) webServer.Update(); } public void RegisterHandler(short msgType,NetworkMessageDelegate handler) { if (server != null) server.RegisterHandler(msgType, handler); if (webServer != null) webServer.RegisterHandler(msgType, handler); } public void UnregisterHandler(short msgType) { if (server != null) server.UnregisterHandler(msgType); if (webServer != null) webServer.UnregisterHandler(msgType); } public void DisconnectAllConnections() { if (server != null) server.DisconnectAllConnections(); if (webServer != null) webServer.DisconnectAllConnections(); } } }