我在Flash Builder 4.6上创建了一个flash聊天应用程序,它连接到我的centos5 32bit服务器上的Flash Media(开发)服务器,问题是我在浏览器中打开它大约2分钟闲置,然后尝试调用netconnection要获取聊天记录或发送公共消息或使用nc.call()方法在服务器端调用函数,它突然说netconnection.connect.closed ..除非我调用,它不会给我一个连接.closed事件..
发生这种情况时,我正在寻找活跃用户的fms管理控制台,但是客户端没有掉线,似乎仍然连接到服务器..即使关闭浏览器,客户端仍然在fms控制台中..(通常,当我关闭浏览器或当我使用nc.close()时,客户端断开连接,我看到fms管理控制台中的快速更改..然后仍然看着fms管理控制台,大约10分钟后客户端掉线..(我认为这是正常的)
我尝试使用与localhost的连接相同的应用程序,它工作得很好,我让应用程序打开很长时间闲置,然后尝试了nc.call()它工作正常...但是当我尝试在我的服务器上的应用程序,我有问题..我在我的服务器上尝试了两个fms 3.5和4.0.3但我也有问题..但在localhost它工作,所以我认为问题不是关于版本它是关于某事与服务器的连接不同..
胡椒flash播放器也被禁用..问题不在于server.xml,application.xml vhost.xml配置文件中的autocloseidleclients属性。问题是不同的连接可能是关于防火墙,TCP,路由器等..我不知道,但我真的需要帮助..
感谢阅读..
答案 0 :(得分:0)
嗯,如果NetConnection
使用套接字工作,那么据我所知,在Windows上,确定套接字是否关闭的唯一方法是尝试向其写入内容;如果它失败了,那么它就被关闭了 - 因此call()
实际上在连接空闲了很长时间后关闭了连接。
关闭浏览器或致电nc.close()
时,这是一个特定的请求 - 通常在服务器上你也会实现类似“如果我在X秒内没有收到任何东西,断开套接字”,会在客户端触发回调。
我实施了一种保持活力;每隔15/30秒,向服务器发送一个简单的ping,这将使您的连接保持打开状态。