Photon Server伺服务器在LoadBalancing的基础上扩展登陆服务
一,如何創(chuàng)建一個Photon Server服務
參見此博客?快速了解和使用Photon Server
二, 讓LoadBalancing與自己的服務一起啟動
原Photonserver.config文件中需要改動的地方有4處
1. ?<UDPListeners> 標簽
Udp監(jiān)聽端口
<UDPListeners><UDPListenerIPAddress="0.0.0.0"Port="5055"OverrideApplication="Master"></UDPListener><UDPListenerIPAddress="0.0.0.0"Port="5056"OverrideApplication="Game"></UDPListener><UDPListenerIPAddress="0.0.0.0"Port="5057"OverrideApplication="LoginServer"></UDPListener></UDPListeners>這里配置我自己的服務 LoginServer 監(jiān)聽端口為5057 所以Unity中鏈接服務器的端口也要改動
address = "127.0.0.1:5057";?//連接本機ip,端口5055是Photon Lobalancing服務的默認端口
Server = "LoginServer";
peer = new PhotonPeer(this, ConnectionProtocol.Udp);?//默認使用udp協(xié)議
peer.Connect(address, Server);
2. ?<TCPListeners> 標簽
TCP監(jiān)控端口
同樣的添加配置
<TCPListenerIPAddress="0.0.0.0"Port="4532"OverrideApplication="LoginServer"PolicyFile="Policy\assets\socket-policy.xml"InactivityTimeout="10000"></TCPListener>? ? ?3. ?<WebSocketListeners>
WebSocket兼容監(jiān)聽
<WebSocketListenerIPAddress="0.0.0.0"Port="9092"DisableNagle="true"InactivityTimeout="10000"OverrideApplication="LoginServer"></WebSocketListener>?4. ?<Applications>標簽
保留Master Game 等原來的標簽
<Applications Default="Master"><ApplicationName="LoginServer" BaseDirectory="LoginServer"Assembly="LoginServer"Type="LoginServer.LoginServer"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application>..
.
</Applications>
完整的Photonserver.config文件
<?xml version="1.0" encoding="Windows-1252"?> <!--(c) 2015 by Exit Games GmbH, http://www.exitgames.comPhoton server configuration file.For details see the photon-config.pdf.This file contains two configurations:"LoadBalancing"Loadbalanced setup for local development: A Master-server and a game-server.Starts the apps: Game, Master, CounterPublisherListens: udp-port 5055, tcp-port: 4530, 843 and 943 --><Configuration><!-- Multiple instances are supported. Each instance has its own node in the config file. --><LoadBalancingMaxMessageSize="512000"MaxQueuedDataPerPeer="512000"PerPeerMaxReliableDataInTransit="51200"PerPeerTransmitRateLimitKBSec="256"PerPeerTransmitRatePeriodMilliseconds="200"MinimumTimeout="5000"MaximumTimeout="30000"DisplayName="LoadBalancing (MyCloud)"><!-- 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><UDPListenerIPAddress="0.0.0.0"Port="5055"OverrideApplication="Master"></UDPListener><UDPListenerIPAddress="0.0.0.0"Port="5056"OverrideApplication="Game"></UDPListener><UDPListenerIPAddress="0.0.0.0"Port="5057"OverrideApplication="LoginServer"></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 --><TCPListenerIPAddress="0.0.0.0"Port="4530"OverrideApplication="Master"PolicyFile="Policy\assets\socket-policy.xml"InactivityTimeout="10000"></TCPListener><TCPListenerIPAddress="0.0.0.0"Port="4531"OverrideApplication="Game"PolicyFile="Policy\assets\socket-policy.xml"InactivityTimeout="10000"></TCPListener><TCPListenerIPAddress="0.0.0.0"Port="4532"OverrideApplication="LoginServer"PolicyFile="Policy\assets\socket-policy.xml"InactivityTimeout="10000"></TCPListener><!-- DON'T EDIT THIS. TCP listener for GameServers on Master application --><TCPListenerIPAddress="0.0.0.0"Port="4520"></TCPListener></TCPListeners><!-- Policy request listener for Unity and Flash (port 843) and Silverlight (port 943) --><PolicyFileListeners><!-- multiple Listeners allowed for different ports --><PolicyFileListenerIPAddress="0.0.0.0"Port="843"PolicyFile="Policy\assets\socket-policy.xml"></PolicyFileListener><PolicyFileListenerIPAddress="0.0.0.0"Port="943"PolicyFile="Policy\assets\socket-policy-silverlight.xml"></PolicyFileListener></PolicyFileListeners><!-- WebSocket (and Flash-Fallback) compatible listener --><WebSocketListeners><WebSocketListenerIPAddress="0.0.0.0"Port="9090"DisableNagle="true"InactivityTimeout="10000"OverrideApplication="Master"></WebSocketListener><WebSocketListenerIPAddress="0.0.0.0"Port="9091"DisableNagle="true"InactivityTimeout="10000"OverrideApplication="Game"></WebSocketListener><WebSocketListenerIPAddress="0.0.0.0"Port="9092"DisableNagle="true"InactivityTimeout="10000"OverrideApplication="LoginServer"></WebSocketListener></WebSocketListeners><!-- Defines the Photon Runtime Assembly to use. --><RuntimeAssembly="PhotonHostRuntime, Culture=neutral"Type="PhotonHostRuntime.PhotonDomainManager"UnhandledExceptionPolicy="Ignore"></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_win32 folders. The BaseDirectory must include a "bin" folder. --><Applications Default="Master"><ApplicationName="LoginServer" BaseDirectory="LoginServer"Assembly="LoginServer"Type="LoginServer.LoginServer"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application><ApplicationName="Master"BaseDirectory="LoadBalancing\Master"Assembly="Photon.LoadBalancing"Type="Photon.LoadBalancing.MasterServer.MasterApplication"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application><ApplicationName="Game"BaseDirectory="LoadBalancing\GameServer"Assembly="Photon.LoadBalancing"Type="Photon.LoadBalancing.GameServer.GameApplication"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application><!-- CounterPublisher Application --><ApplicationName="CounterPublisher"BaseDirectory="CounterPublisher"Assembly="CounterPublisher"Type="Photon.CounterPublisher.Application"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application> </Applications></LoadBalancing> <!-- Instance settings --><MMoDemoMaxMessageSize="512000"MaxQueuedDataPerPeer="512000"PerPeerMaxReliableDataInTransit="51200"PerPeerTransmitRateLimitKBSec="256"PerPeerTransmitRatePeriodMilliseconds="200"MinimumTimeout="5000"MaximumTimeout="30000"DisplayName="MMO Demo"><!-- 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><UDPListenerIPAddress="0.0.0.0"Port="5055"OverrideApplication="MMoDemo"></UDPListener></UDPListeners><!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. --><!-- Port 4530 is Photon's default for TCP connecttions. --><!-- A Policy application is defined in case that policy requests are sent to this listener (known bug of some some flash clients) --> <TCPListeners><TCPListenerIPAddress="0.0.0.0"Port="4530"PolicyFile="Policy\assets\socket-policy.xml"InactivityTimeout="10000"OverrideApplication="MMoDemo" ></TCPListener></TCPListeners><!-- Policy request listener for Unity and Flash (port 843) and Silverlight (port 943) --><PolicyFileListeners><!-- multiple Listeners allowed for different ports --><PolicyFileListenerIPAddress="0.0.0.0"Port="843"PolicyFile="Policy\assets\socket-policy.xml"InactivityTimeout="10000"></PolicyFileListener><PolicyFileListenerIPAddress="0.0.0.0"Port="943"PolicyFile="Policy\assets\socket-policy-silverlight.xml"InactivityTimeout="10000"></PolicyFileListener></PolicyFileListeners><!-- WebSocket (and Flash-Fallback) compatible listener --><WebSocketListeners><WebSocketListenerIPAddress="0.0.0.0"Port="9090"DisableNagle="true"InactivityTimeout="10000"OverrideApplication="MMoDemo"></WebSocketListener></WebSocketListeners><!-- Defines the Photon Runtime Assembly to use. --><RuntimeAssembly="PhotonHostRuntime, Culture=neutral"Type="PhotonHostRuntime.PhotonDomainManager"UnhandledExceptionPolicy="Ignore"></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_win32 folders. The BaseDirectory must include a "bin" folder. --><Applications Default="MMoDemo"><!-- MMO Demo Application --><ApplicationName="MMoDemo"BaseDirectory="MmoDemo"Assembly="Photon.MmoDemo.Server"Type="Photon.MmoDemo.Server.PhotonApplication"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application><!-- CounterPublisher Application --><ApplicationName="CounterPublisher"BaseDirectory="CounterPublisher"Assembly="CounterPublisher"Type="Photon.CounterPublisher.Application"ForceAutoRestart="true"WatchFiles="dll;config"ExcludeFiles="log4net.config"></Application> </Applications></MMoDemo></Configuration> View Code?
? unity 中使用?PhotonPeer 的時候要注意在銷毀場景的時候關(guān)閉鏈接?peer.Disconnect();
否則unity會在第二次運行的時候出現(xiàn)卡死的狀態(tài).
PhotonPeer連接服務器的時候會創(chuàng)建一個網(wǎng)絡線程,停止調(diào)試并不會自動的將這個線程結(jié)束,再次調(diào)試的時候Unity就會卡在PhotonPeer創(chuàng)建網(wǎng)絡線程的操作上.......
?
這是我的登陸服務
轉(zhuǎn)載于:https://www.cnblogs.com/laddc/p/6752476.html
總結(jié)
以上是生活随笔為你收集整理的Photon Server伺服务器在LoadBalancing的基础上扩展登陆服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库mongodb和mysql对比
- 下一篇: 网络诊断及工具