SmartFoxServer 扩展API

»扩展API

在本文中,我们将介绍Extension API中最有用的元素,以及如何利用服务器端框架和随附的javadoc。
»BaseSFSExtension与SFSExtension

我们提供两个类作为主扩展类的基本类型:BaseSFSExtension和SFSExtension,它们都位于com.smartfoxserver.v2.extensions包下。前者主要用于与SmartFoxServer PRO 1.x的兼容性,而SFSExtension是为了获得最好的SFS2X而延伸的推荐类。

在本文中,我们将假设您的主要扩展类扩展了SFSExtension(有关两者之间的差异的更多细节,请参阅深度文章中的服务器端扩展)。
»区级/房间级

服务器扩展可以插入一个区域(我们称之为区域级扩展)来管理整个应用程序或单个房间(房间级别扩展),以便仅管理该特定房间。

两种方法之间的区别仅在于范围。区级扩展可以侦听该区域中的任何事件,并控制其管理的所有房间和用户。另一方面,房间级别的扩展只能听取该房间中的事件并管理其中包含的用户。

房间级别扩展的典型用途是管理在房间里运行的游戏的逻辑。
»使用服务器API

SFS2X框架主要由三个不同的元素组成。

API类:它们提供了有组织的方式来访问服务器的许多功能,例如创建房间,设置房间/用户变量,处理游戏挑战,匹配玩家等等。
服务:它们管理服务器的特定元素。例如,RoomManager提供对在Zone中创建的房间的访问,允许执行搜索,过滤等。
数据类:它们在框架中是最多的,它们为SmartFoxServer数据(例如用户,房间,好友,邀请,事件等)提供抽象。

我们现在将仔细看看每个人,并简要讨论一下。
»API类

访问API的最简单方法是通过扩展中的getApi方法,它提供对服务器核心API的引用。您可以通过检查SFSApi类javadoc来了解所有方法。
这是一个快速的例子,显示如何创建一个房间:

void makeRoom() throws SFSCreateRoomException
{
    CreateRoomSettings settings = new CreateRoomSettings();
    settings.setName("The music Room");
    settings.setMaxUsers(20);

    getApi().createRoom(getParentZone(), settings, null);
}

SFS2X还为好友列表和游戏匹配功能提供专门的API。 在下面的段落中,我们将介绍如何访问它们。
»SmartFoxServer类

框架中的下一个重要元素是SmartFoxServer类,它提供对系统中运行的许多服务的访问。 虽然使用服务是一个相当高级的话题,我们也可以使用这个对象访问专门的API。

像下面的代码段所示,例如您可以访问Game API和Buddy List API:

void getMoreApi(User owner) throws SFSCreateRoomException
{
    ISFSGameApi gameApi = SmartFoxServer.getInstance().getAPIManager().getGameApi();
    ISFSBuddyApi buddyApi = SmartFoxServer.getInstance().getAPIManager().getBuddyApi();

    CreateSFSGameSettings settings = new CreateSFSGameSettings();
    settings.setName("PongRoom");
    settings.setMaxUsers(2);
    settings.setMaxSpectators(8);

    // ...more game settings here...这里有更多的游戏设置

    gameApi.createGame(getParentZone(), settings, owner);
}

»数据类

框架中有数十种不同的数据类,为API的各种元素提供了抽象:区域,房间,用户等。它们主要位于com.smartfoxserver.v2下包装。

服务器端开发的一个重要方面是数据类应始终用于阅读属性,但很少用于编写它们。例如,对区域或房间的值进行直接更改将仅导致本地更改,并且不会将更新发送到客户端。

换句话说,这些类暴露了许多getter和setter,但是对于Extension开发,只有getter是非常重要的。这些更改通过API来应用,这提供了一种机制,用于使服务器上发生的更改维护所有客户端的最新信息。

一个实际的例子是为客户端设置用户变量。如果您查询javadoc,您将注意到User对象公开了可能会被诱使使用的setVariable方法。没有任何错误,但更改将仅在服务器端发挥作用,并且不会向客户端发送更新(这是保持正确同步所必需的)。

正确的方法是使用API​​ setUserVariables方法,该方法可以在必要时自动通知需要更新的所有客户端,甚至启动服务器事件。
“ 更多资源

现在,您已经了解了扩展开发的基础知识,现在应该是有趣的东西,编写自己的实验框架。

另外我们强烈推荐以下资源来了解更多信息:

服务器端扩展深入文章
高级扩展主题文档
Java服务器端API文档,特别是表示与服务器交互的入口点的SFSApi类
Tris游戏,适用于所有支持的平台,其中包括服务器端源代码
BattleFarm和Space Race ActionScript 3游戏,其中包括客户端和服务器端的源代码

翻译自http://docs2x.smartfoxserver.com/DevelopmentBasics/extension-api

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值