我目前正在为一个预先存在的服务/标准的Flash套接字客户端工作。该服务使用TCP流量控制来限制自身,Flash套接字尽可能快地读取所有内容,尽管无法像接收它那样快速处理它。这会导致套接字上的bytesAvailable继续增加和服务器从来不知道客户落后了。
简而言之,有没有办法限制Flash Socket对象的可用字节大小或以其他方式限制它?
注意:当前重写服务器不是一个可行的选项,因为它是一个标准,如果需要服务器端更改,客户端的实用程序会大大减少
答案 0 :(得分:2)
经过研究,我发现当CPU在系统上最大化时,Actionscript Socket类将开始限制(可能是由于资源耗尽/响应时间慢)。
这实际上已经解决了我的问题,因为我已经编写了代码,以便在应用程序“想要”每秒有多少帧和在套接字中有多少字节可用之间取得平衡。如果bytesAvailable太高,应用程序将处理不间断并将CPU驱动至100%,最终导致套接字速度变慢。
答案 1 :(得分:0)
我认为不可能。 AS3中没有可以使用TCP级别的字节进行操作的低级API。但是你可以在更高级别上实现节流。 例如:在将字节放入Socket的byteArray之前,检查在过去几秒钟内放置了多少数据。如果此值太高 - 推迟操作。