Photon Server4.0版本入门(二)创建一个Photon的ServerDemo

来源:互联网 发布:淘宝茶叶拍摄技巧 编辑:程序博客网 时间:2024/06/07 04:46

啧 看了一下很难找到Photon4.0版本的入门资源【因为大部分都是3.4的

正好自己也在入门阶段 写一个算是自己成长的记录


Photon有cloud/PUN和server可以选  当然我更想学PUN如果有大神有学习经验愿意传授不胜感激!

而这个系列只讲Server


虽然知道会不会有转载但

如果转载请注明出处标明原博客地址


上一章简单介绍了一下Photon,下面来做一个简单的Demo感受一下



1.服务说明

大概是做一个关于客户端向服务器发送一段信息,服务器接收,再返回给客户端的服务。

2.创建一个服务器

打开VS,文件>新建>项目,在VC#模板选择类库。名称为ChatServer,选好创建项目的位置,确定创建。删掉自动创建的Class1.cs(此时该项目下没有cs文件)。

打开解决方案管理器(调出解决方案窗口如图),右键引用>添加引用>浏览,选择photon的安装目录,在lib下选择[ExitGamesLibs.dll]、[Photon.SocketServer.dll]、[PhotonHostRuntimeInterfaces.dll]三个dll文件,确定引用。

引用成功后,在解决方案空白处右键添加>新建项>类,创建ChatServer类。

将ChatServer类继承ApplicationBase,添加Photon.SocketServer命名空间,并添加override函数,删掉throw。代码如下(此时CreatePeer会报错,无视之)。

using Photon.SocketServer;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChatServer{    //继承自 ApplicationBase 的类  是server的入口程序/启动程序    class ChatServer : ApplicationBase    {        /// <summary>        /// 当一个客户端链接到这个server端的时候调用        /// </summary>        /// <param name="initRequest"></param>        /// <returns></returns>        protected override PeerBase CreatePeer(InitRequest initRequest)        {        }        /// <summary>        /// 当这个server端启动时调用        /// </summary>        protected override void Setup()        {        }        /// <summary>        /// 当这个server被停用的时候调用        /// </summary>        protected override void TearDown()        {        }    }}

在添加一个ChatPeer类,继承ClientPeer(4.0之前的版本是继承PeerBase),补上命名空间,创建构造方法ChatPeer并添加override函数。代码如下。

using Photon.SocketServer;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using PhotonHostRuntimeInterfaces;namespace ChatServer{    //用来跟客户端通信    class ChatPeer : ClientPeer    {        public ChatPeer(InitRequest initRequest):base(initRequest)        {        }        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)        {            throw new NotImplementedException();        }        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)        {            throw new NotImplementedException();        }    }}

此时再回到ChatServer类中,补充CreatePeer函数。CreatePeer函数代码如下。


        /// <summary>        /// 当一个客户端链接到这个server端的时候调用        /// </summary>        /// <param name="initRequest"></param>        /// <returns></returns>        protected override PeerBase CreatePeer(InitRequest initRequest)        {            return new ChatPeer(initRequest);        }

然后右键项目,选择属性,如图。


再在Photon目录下的deploy文件里创建一个ChatServer_TaidouDemo的文件夹,在ChatServer_TaidouDemo下创建bin文件夹。

回到VS。


点击浏览,选择刚刚创建的ChatServer_TaidouDemo下的bin文件夹(是bin文件夹!bin文件夹!bin文件夹)。Ctrl+S保存一下。

VS里选择生成>生成解决方案。生成结束后会发现ChatServer_TaidouDemo/bin里出现了一堆文件。


然后在vs里打开[xxx\deploy\bin_Win64\PhotonServer.config ]文件,用图粗暴的简单介绍一下这里头都是啥。


嗯很粗暴2333

在修改config配置文件之前运行一下LoadBalancing或MMO,确保能够正常启动。

我决定将ChatServer放在LoadBalancing下。

展开LoadBalancing,找到<Applications Default="xxx">xxx...</Applications>,配置我们自己的Application节点。

简单介绍一下:Name,和服务名一样;BaseDiretory,指你生成解决方案的位置,相对于deploy下的目录;Assembly,代表主类(继承自ApplicationBase的启动类)所在的dll文件名;Type的话,就是“命名空间.类名”;剩下的,copy别的就好了。


做到这个时候,配置就完成了。保存一下,运行一下的PhotonServer,然后启动LoadBalancing。

  *  如果失败的话...看一下你的Logs,如果看不懂就....重启一下电脑...

如果能够成功运行,在logs里能找到这么一堆信息


哎呀运行了,感动...


模拟客户端进行测试下一章讲,加油(ง •_•)ง

0 0
原创粉丝点击