2010-02-24 110 views
2

我想知道当Flex客户端与BlazeDS目标断开连接时,是否可以轻松检测(在服务器端)?我的情况就是,我想尝试使用它来计算每个客户端连接每个会话的时间。我需要能够区分客户端(即不仅仅是统计我在ds-console中看到的当前连接的客户端的数量)。Flex客户端从BlazeDS目标断开连接时检测(在服务器端)

虽然我可以在我的客户端的“我正在注销”进程中进行编程,但我不知道如果客户端只是导航到另一个网页,而不是通过所述注销过程,它会触发。

任何人都可以建议,如果有一种简单的方法来做这种类型的监测在服务器端请。

非常感谢, 亚历

回答

0

正确做到这一点的唯一方法是以某种方式实现心跳机制。您可以像前面建议的那样,使用http中的保持活动状态以及会话过期,但我的观点是使用BlazeDS的消息机制(以X秒发送消息)。您可以控制时间间隔和其他方面(也许您希望检测客户端是否在几个小时内没有做任何事情,并且即使客户端仍处于连接状态也会使会话失效)。

如果你想将立即通知(聊天应用程序),当客户端断开的解决方案是有一个插座(RTMP)或一些模拟(HTTP流媒体)如果客户端断开连接,这将即刻检测,然而,这断线可能是暂时的(也许网络关闭了一秒钟,之后就可以了,你也应该检测到这一点)。

+0

感谢你们双方的爱马仕和康奈尔。某种心跳是我想我可能必须做的事情(我认为应该很容易为连接的客户端设置“心跳”目标)。我只是在想这可能是BlazeDS内置的东西(尽管我还没有找到它)。我会计划心跳。 再次 – AlexC 2010-02-25 20:58:09

0

我假设的BlazeDS将提供当一个客户端断开连接的回调或事件,但我还没有与Blaze工作,这样也只是一个猜测。第一步是查看文档以查看它是否有效,因为这将是您最好的选择。

我在没有断开连接事件(或不可靠)的情况下所做的工作是添加一个保持连接的消息。例如,客户端将被配置为每隔30秒发送一次保持活动消息,并且如果服务器的运行时间超过2分钟而没有看到保持活动,那么它假定客户端已断开连接。这可以让你区分不同的客户,并且可以利用费率和检查时间来获得满意的东西。

1

实现你延长自己的适配器 “延伸ServiceAdapter”

然后设定功能:

@覆盖 公共布尔handlesSubscriptions(){ 回归真实; } 所以,你可以处理订阅和退订

然后你就可以管理那些在管理功能:

@覆盖 公共对象管理(CommandMessage commandMessage){

开关(commandMessage.getOperation() ){ case CommandMessage.SUBSCRIBE_OPERATION: break; case CommandMessage。UNSUBSCRIBE_OPERATION: break; }

}

您还可以乘坐不同的命令。

希望得到这个帮助

相关问题