其他分享
首页 > 其他分享> > PhotonServer(一)——服务器基础搭建

PhotonServer(一)——服务器基础搭建

作者:互联网

PhontonServer下载:

https://www.photonengine.com/en-US/sdks#server-sdkserverserver

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

官方配置资料:  https://doc.photonengine.com/en-us/server/current/getting-started/photon-server-in-5min

解除20人同时连接限制到100人同时连接:

下载后我们可以根据文档来进行Server的配置。刚下载并且解压下来后可以看到限制最大连接数为20人,那么这里我们可以升级到100人连接数的,首先注册并登录PhontonServer,然后再下面网址下载一个解除100人数限制的文件。https://dashboard.photonengine.com/en-US/selfhosted

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

下载后的文件,根据电脑系统,32位就放在PhotonServer解压下..\deploy\bin_Win32,如果是64位就放在PhotonServer解压下..\deploy\bin_Win64,我电脑是64,如下

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

然后我们启动PhotonControl.exe,这时候我们就可以看到最大连接数到了100人了。

创建自己的Server

我这里用的是VS 2017

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

完成后,要开始创建生成库,在PhotonServer解压下..\deploy中创建自己项目名称文件夹,在此文件夹中创建bin文件夹。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

之后,开始开发服务器端,通过浏览,添加下载的PhotonServer中一下五个.dll文件

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

服务器代码:

using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AR_RemoteServer
{
    //所有的Server端 主类都要继承自applicationbase
    public class RemoteServer : ApplicationBase
    {
        //当一个客户端请求连接的时候,服务器端就会调用这个方法
        //我们使用peerbase,表示和一个客户端的链接,然后photon就会把这些链接管理起来
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            return new ClientPeer(initRequest);
        }

        protected override void Setup()
        {
            
        }

        protected override void TearDown()
        {
            
        }
    }
}
 using Photon.SocketServer;
using PhotonHostRuntimeInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AR_RemoteServer
{
    //管理跟客户端的链接的
    class ClientPeer : Photon.SocketServer.ClientPeer
    {
        public ClientPeer(InitRequest initRequest) : base(initRequest)
        {
        }
        //处理客户端断开连接的后续工作
        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {
           
        }
        //处理客户端的请求
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            
        }
    }
}
 

至于服务端具体代码,后续我们在整合。

下面开始生成服务:配置好这些信息后,右击项目—>生成,生成后在之前设置的文件夹下就会出现.dll文件

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

开始配置刚才生成的Server:

首先,打开PhotonServer.config配置

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

开始配置我们的TCP,UDP配置。用VS打开它。可以看到LoadBalancing配置,可以根据这个写入字节的配置节点,这里我们直接复制一份出来,还是复制到PhotonServer.config下,修改一下节点就OK。

 <ArRemote
   MaxMessageSize="512000"
   MaxQueuedDataPerPeer="512000"
   PerPeerMaxReliableDataInTransit="51200"
   PerPeerTransmitRateLimitKBSec="256"
   PerPeerTransmitRatePeriodMilliseconds="200"
   MinimumTimeout="5000"
   MaximumTimeout="30000"
   DirectDispatchToCLR="true"
   DisplayName="ArRemote">

    <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
    <!-- Port 5055 is Photon's default for UDP connections. -->
    <UDPListeners>
      <UDPListener
        IPAddress="0.0.0.0"
        Port="5055"
        OverrideApplication="AR_RemoteServer">
      </UDPListener>
    </UDPListeners>
    <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
    <TCPListeners>
      <!-- TCP listener for Game clients on Master application -->
      <TCPListener
        IPAddress="0.0.0.0"
        Port="4530"
        OverrideApplication="AR_RemoteServer"
        InactivityTimeout="10000">
      </TCPListener>
    </TCPListeners>

    <!-- WebSocket (and Flash-Fallback) compatible listener -->
    <WebSocketListeners>
      <WebSocketListener
        IPAddress="0.0.0.0"
        Port="9090"
        DisableNagle="true"
        InactivityTimeout="10000"
        OverrideApplication="AR_RemoteServer">
      </WebSocketListener>
    </WebSocketListeners>

    <!-- Defines the Photon Runtime Assembly to use. -->
    <Runtime
      Assembly="PhotonHostRuntime, Culture=neutral"
      Type="PhotonHostRuntime.PhotonDomainManager"
      UnhandledExceptionPolicy="TerminateProcess">
    </Runtime>

    <!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. -->
    <!-- Application-folders must be located in the same folder as the bin_Win64 folders. The BaseDirectory must include a "bin" folder. -->
    <Applications Default="AR_RemoteServer">
      <Application
        Name="AR_RemoteServer"
        BaseDirectory="AR_RemoteServer"
        Assembly="AR_RemoteServer"
        Type="AR_RemoteServer.RemoteServer">
      </Application>
    </Applications>
  </ArRemote>

修改部分:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=  watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

Application标签中,添加 ForceAutoRestart="true"表示是“否自动重启”。

最后关闭重启下Photon,就可以看到ArRemote的Application 了,启动起来。

日志输出:

打开Open logs,会弹出

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

输出Server启动的一些信息,如果启动出错可以在这找错误信息。另一个CLR是提示License以及最大连接数,以及运行的Photon的应用的配置信息等,可以通过CLR看出哪些配置出错了,这个是Photon的两个日志输出.

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

出现上面的running就启动成功。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

出现上面CServerice:OnException(),表示出现错误,看后面意思修改。

扩展自己Log输出:

上边已经引入log4net.dll文件,可以去log4net的官网找这个配置怎么写,也可以在我们下载的photon里面找这个配置文件。这里我在phonton文件下的目录里面找到了配置文件log4net.config,把配置文件log4net.config复制到我们项目里面的根目录下并且将它设置为始终复制,然后打开配置文件修改里面的配置。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

下面我们开始创建一个Log对象,然后初始化。在RemoteServer这个类里面定义一个Log对象

//定义一个Log对象
  public static readonly ILogger log = LogManager.GetCurrentClassLogger();
//调用
log.Info("连接");

输出日志文件在下列路径可以找到

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

这样整个服务就配置好了,至于服务编码后续再总结

标签:配置,Photon,System,PhotonServer,using,override,服务器,搭建
来源: https://blog.51cto.com/myselfdream/2964451