我有一个Flex应用程序,该应用程序使用StreamingAMF通道连接到BlazeDS服务器.
在服务器端,逻辑由自定义适配器处理,该适配器扩展了ActionScriptAdapter并实现了FlexSessionListener和FlexClientListener接口.
我问例如当用户关闭浏览器时,如何检测哪个“ flex-client”关闭了连接? (所以我可以清理数据库中的一些信息)
我尝试使用以下内容:
1.要手动管理命令消息:
@Override
public Object manage(final CommandMessage commandMessage) {
switch (commandMessage.getOperation()) {
case CommandMessage.SUBSCRIBE_OPERATION:
System.out.println("SUBSCRIBE_OPERATION = " + commandMessage.getHeaders());
break;
case CommandMessage.UNSUBSCRIBE_OPERATION:
System.out.println("UNSUBSCRIBE_OPERATION = " + commandMessage.getHeaders());
break;
}
return super.manage(commandMessage);
}
但是clientID始终与所提供的不同.
2.监听sessionDestroyed和clientDestroyed事件
@Override
public void clientCreated(final FlexClient client) {
client.addClientDestroyedListener(this);
System.out.println("clientCreated = " + client.getId());
}
@Override
public void clientDestroyed(final FlexClient client) {
System.out.println("clientDestroyed = " + client.getId());
}
@Override
public void sessionCreated(final FlexSession session) {
System.out.println("sessionCreated = " + session.getId());
session.addSessionDestroyedListener(this);
}
@Override
public void sessionDestroyed(final FlexSession session) {
System.out.println("sessionDestroyed = " + session.getId());
}
但是,从未调用那些sessionDestroyed和clientDestroyed方法. ?