ESFramework 使用技巧 -- 部署P2P服务器

      可靠的P2P通信功能是ESFramework/ESPlus提供的一个基础而又强大的功能,ESFramework 开发手册(04) -- 可靠的P2P详细描述了在客户端如何使用框架提供的这一武器。本文我们则将介绍的重点放到P2P服务端。

      P2P服务器用于协助客户端之间创建P2P通道。在ESPlus3.0以前的版本中,P2P服务器是集成在服务端Rapid引擎中的。在2012.04.23最新发布的3.0版本中,这种模式依然被支持,而且,ESPlus又提供了另外一种部署模型:独立部署P2P服务器。

一.集成部署P2P服务器

1.服务端IRapidServerEngine有一个UseAsP2PServer属性,用于指示服务端是否同时作为P2P服务器运行。如果将该属性设置为true,然后启动服务端,P2P服务器就会被集成在服务端中同时运行起来。

2.集成启动的P2P服务器监听的UDP端口号为当前IRapidServerEngine监听的TCP端口号加1。比如:IRapidServerEngine监听的TCP端口号为4530(通过其Initialize方法初始化时设定),则P2P服务器监听的UDP端口就是4531。如果是服务端使用框架内置的MainServerForm作为主界面显示,将会看到:

     

3.如果服务端集成启动了P2P服务器,那么客户端不再需要设置IRapidPassiveEngine的P2PServerAddress属性了。 客户端将在登录服务端时,发现如果服务端已经集成了P2P服务器,则会自动与集成的P2P服务器建立联系。

4.如果服务端集成启动了P2P服务器,客户端仍然可以设置IRapidPassiveEngine的P2PServerAddress属性。比如,直接将P2PServerAddress设置为集成P2P服务器的地址:

  rapidPassiveEngine.P2PServerAddress = new AgileIPE("192.168.0.98", 4531);

      这种情况下,客户端还是会使用服务端集成的P2P服务器。但是,如果将P2PServerAddress设置为其它地址:

  rapidPassiveEngine.P2PServerAddress = new AgileIPE("192.168.0.100", 4500);

       那么,客户端就不会再使用服务端集成的P2P服务器,而是转向使用监听在192.168.0.100的4500端口的P2P服务器了,这种情况,就像是使用独立部署的P2P服务器一样了。 

 

二.独立部署P2P服务器

       我们提供了可独立启动的P2P服务器exe,运行后,显示的界面如下所示: 

               

1.配置文件     

      可以通过配置文件修改要监听的端口号等信息。xml配置文件内容如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Port" value="9901"/>
<add key="MaxLengthOfUserID" value="11"/>
<add key="SecurityLogEnabled" value="false"/>
</appSettings>
</configuration>

      Port设定要监听的UDP端口。

      MaxLengthOfUserID用于设定UserID的最大长度。由于P2P服务器内部使用的仍然是ESFramework极其消息协议格式,所以MaxLengthOfUserID的值必需与客户端的设定完全一致。(可以参考ESFramework 开发手册(02) -- 基础功能与状态通知) 

      SecurityLogEnabled用于设定是否开启日志记录。

 2.界面显示

      P2P服务器的界面除了显示监听的UDP端口号之外,还显示了UDP Session会话的个数,以及线程池中可用的空闲线程的个数。

      客户端登录时,会与P2P服务器建立UDP Session,完成了必要的通信之后,客户端会主动关闭这个Session。会话个数表示的是当前还未关闭的Session的数量,而不是当前已启动的客户端的数量。

      会话个数的值与RapidServerEngine服务端的在线人数的值几乎是没有必然的联系的。

3.如何部署

      首先,我们将服务端的IRapidServerEngine的UseAsP2PServer属性设为false,表示将要使用独立部署的P2P服务器。

      其次,启动P2P服务器。我们可以把P2P服务器部署到不同于RapidServerEngine服务端所在的服务器上。

      最后,将客户端IRapidPassiveEngine的P2PServerAddress属性设置为P2P服务器的地址就可以了。

      由于P2P服务器消耗的资源非常的小,对服务器配置的要求不是很高。所以,多个RapidServerEngine服务端可以共享一个P2P服务器。特别是在ESPlatform群集中,我们可以部署许多个应用服务器,但是只要部署一个P2P服务器就可以了。 

 

三.禁用P2P

      我们只要将服务端的IRapidServerEngine的UseAsP2PServer属性设为false,并将客户端IRapidPassiveEngine的P2PServerAddress属性设置为null,就表示禁用P2P。这样,客户端IRapidPassiveEngine初始化完成后,其P2PController属性的值将为null。

 

四.下载

       ESFramework P2P 服务器

 

-----------------------------------------------------------------------------------------------------------------------------------------------  

 下载免费版本的ESFramework 以及 demo源码   

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

详细说明

SDK下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

详细说明

客户端下载

傲瑞实用组件

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品授权说明

产品选购指南

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com