You can not 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
2.7 KiB

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. namespace Networking.Server {
  7. [CreateAssetMenu(menuName = "Major Project/Networking/ServerObject", order = 150)]
  8. public class ServerObject : ScriptableObject
  9. {
  10. #region Inspector Fields
  11. [Header("Server Settings")]
  12. [SerializeField]
  13. private int Port;
  14. [SerializeField]
  15. private bool useWebSockets;
  16. [SerializeField]
  17. private int webPort;
  18. [Header("References")]
  19. [SerializeField]
  20. private ClientList LoginHandler;
  21. #endregion Inspector Fields
  22. #region ReadOnly Variables
  23. public NetworkServerSimple server { get; private set;}
  24. private NetworkServerSimple webServer;
  25. #endregion ReadOnly Variables
  26. public void StartServer()
  27. {
  28. LoginHandler.ConnectedClients = new List<ClientData>();
  29. LoginHandler.DisconnectedClients = new List<ClientData>();
  30. //Debug.Log("Starting Server on " + port);
  31. server = new NetworkServerSimple();
  32. server.Configure(TransportConfigure.CreateConfigure(),32);
  33. if (useWebSockets)
  34. {
  35. webServer = new NetworkServerSimple();
  36. webServer.useWebSockets = true;
  37. webServer.Configure(TransportConfigure.CreateConfigure(), 32);
  38. }
  39. LoginHandler.SetUp(this);
  40. server.Listen(Port);
  41. webServer.Listen(webPort);
  42. }
  43. public void ServerClose()
  44. {
  45. if (server != null)
  46. server.Stop();
  47. if (webServer != null)
  48. webServer.Stop();
  49. }
  50. public void ServerUpdate()
  51. {
  52. if (server != null)
  53. server.Update();
  54. if (webServer != null)
  55. webServer.Update();
  56. }
  57. public void RegisterHandler(short msgType,NetworkMessageDelegate handler)
  58. {
  59. if (server != null)
  60. server.RegisterHandler(msgType, handler);
  61. if (webServer != null)
  62. webServer.RegisterHandler(msgType, handler);
  63. }
  64. public void UnregisterHandler(short msgType)
  65. {
  66. if (server != null)
  67. server.UnregisterHandler(msgType);
  68. if (webServer != null)
  69. webServer.UnregisterHandler(msgType);
  70. }
  71. public void DisconnectAllConnections()
  72. {
  73. if (server != null)
  74. server.DisconnectAllConnections();
  75. if (webServer != null)
  76. webServer.DisconnectAllConnections();
  77. }
  78. }
  79. }