登陆及设置SmartFoxServer

»登录阶段

我们在上一章中已经看到如何开始与SmartFoxServer的连接,并提到在客户端可以开始与服务器API和其他用户进行交互之前,必须先登录一个Zone。

为了看到服务器中可用的区域并创建新的区域,您可以使用SFS2X管理工具。在工具的左侧栏中选择“区域配置器”,并显示所有区域的列表。

区域配置工具

从这里,您可以双击(或选择并单击编辑按钮)任何区域名称,然后继续进行区域设置的配置。有关使用说明,请参阅Zone Configurator文档。
»默认与自定义登录

在我们继续显示登录请求的基本代码之前,我们需要将注意力放在“Zone Configurator”区域名称后面的“使用自定义登录”区域中的一个非常重要的设置上。

此参数的值(默认设置为off)确定哪个控制器将接收并处理登录请求。

customLogin设置为false:系统控制器将处理登录阶段。在这种情况下,任何用户名都将被接受,除非其他用户已经登录到具有相同名称的区域。密码将被忽略。如果一个空字符串作为名称传递,服务器将自动生成一个“访客”用户名(例如访客#42)。
customLogin设置为true:Extension Controller将处理登录阶段,允许开发人员的Extension验证用户凭据并执行任何其他所需的操作。

»登录区域

登录阶段总是从客户端发送一个LoginRequest到服务器。这需要几个参数:

用户名:(可选)用户名
密码:(可选)密码
区域名称:区域的名称;它必须存在于服务器端
额外的参数:(可选)包含额外的自定义数据的对象;通常这是与基于扩展的登录结合使用,以便将自定义数据发送到服务器端

登录区域只需要几行代码:实质上,您只需要注册SmartFox类实例即可接收SFSEvent.LOGIN和SFSEvent.LOGIN_ERROR事件,并继续执行该请求。

var sfs:SmartFox = new SmartFox();
sfs.addEventListener(SFSEvent.LOGIN, onLogin);
sfs.addEventListener(SFSEvent.LOGIN_ERROR, onLoginError);
...
...

// This code is executed after the connection
sfs.send( new LoginRequest("", "", "SimpleChat") );

public function onLogin(evt:SFSEvent):void
{
    trace("Login success: " + evt.params.user.name);
}

public function onLoginError(evt:SFSEvent):void
{
    trace("Login failed: " + evt.params.errorMessage);
}

在上述ActionScript 3示例中,我们使用默认登录(由系统控制器处理),并传递一个空字符串作为用户名,从而获得一个自动生成的访客名称。

注意
加载外部配置文件时,无需将Zone名称传递给LoginRequest构造函数,API将自动获取。

这是另一个LoginRequest代码段:

sfs.send(new LoginRequest(“Fozzie”));

在这种情况下,我们发送用户名,无密码,并且不指定区域名称,系统将使用从配置文件加载的名称。
»什么可能出错?

在登录阶段,服务器执行许多验证可能会阻止进程并导致SFSEvent.LOGIN_ERROR事件触发。我们简单介绍一下可能出现的问题。

缺少区域:请求的区域名称与服务器上任何可用的Zons不对应。
区域已满:请求的区域已达到允许的最大用户数量(可在AdminTool的区域配置器模块中配置)。
服务器已满:SmartFoxServer实例已达到其最大容量,不能接受其他用户。
重复的名称:没有两个用户可以在区域中使用相同的名称。这是区分大小写的,所以两个用户名“Fozzie”和“fozzie”不会造成任何问题。
用户名中的不良词:如果在“区域”中配置了“Word筛选器”,并将其应用于用户名,则如果此名称匹配过滤器中配置的任何发音字,则可能会触发错误。
禁止的用户名:如果提供的用户名被主持人或管理员禁止,客户端将无法加入该区域,直到流放过期。

»房间列表

在第一个代码示例中,我们看到当登录成功时,服务器将用户加入到所请求的区域中。幕后SmartFoxServer还执行一些我们需要了解的其他操作。

1.自动订阅默认房间组:在区域配置器中,您可以声明一些公共房间组。默认情况下,只有一个组称为“默认”,如果需要,您可以添加更多。房间组只不过是一个字符串id,它用于组织不同类别的房间称为房间组。
登录后,客户端将被订阅到“区域”的“默认房间组”设置中指定的所有组。
  1. 使用初始房间列表填写客户端:幕后客户端收到房间列表,其中填有所有订阅组中包含的所有房间。此操作完成一次,在登录时,只有小的更新将被发送到客户端,以维护房间列表与服务器最新。
    这里写图片描述
    在上面的例子中,该区域包含三个不同的房间组别,称为欧洲,美洲和亚洲,每个房间都包含一定数量的房间。如果我们假设该区域的默认Group属性设置为“欧洲,美国”,客户端列表将填充这两个组中的所有房间的详细信息,并将收到有关任何“有趣”更改的更新(例如,新房间为创建或另一个被删除等)。

您可以在本文档中阅读有关组的其他信息。
»自定义登录

登录过程中一个非常常见的用例是编写一个扩展,用于处理用户凭据并根据您的数据库进行检查。为了做到这一点,你将需要一些初步的步骤。

  1. 设置数据库连接。您可以按照本教程介绍如何配置SFS2X与数据库通信。
  2. 准备一个将执行用户名和密码验证的简单扩展。我们提供扩展程序和登录how-to教程的深入概述。
  3. 打开“区域配置器”中的“使用自定义登录”设置并设置您的扩展。

翻译自http://docs2x.smartfoxserver.com/DevelopmentBasics/login-phase

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值