AS3中的TCP流量控制?

3
我目前正在为一个现有的服务/标准开发Flash套接字客户端。该服务使用TCP流量控制来限制自身,而Flash套接字正在尽可能快地读取所有内容,尽管无法像被接收的那样快速处理它。这导致套接字上的bytesAvailable不断增加,服务器永远不知道客户端已经落后了。
简而言之,是否有任何方法可以限制Flash Socket对象的bytesAvailable大小或以其他方式进行限制?
注意:重写服务器在当前时间不是可行的选择,因为它是一个标准,并且如果需要进行服务器端更改,则客户端的效用会急剧下降。

我并不是为了你而这么做,只是以防万一。你可能想将flex3重新标记为flex,因为我认为有更多的人监控那个标签。 - invertedSpear
2个回答

2
经过研究,我发现Actionscript Socket类在系统CPU达到最大值时会开始限制流量(可能是由于资源耗尽/响应时间缓慢所致)。
这实际上解决了我的问题,因为我编写的代码平衡了应用程序“想要”的每秒帧数和套接字中可用的字节数。如果bytesAvailable太高,应用程序将不停地处理并将CPU推向100%,最终导致套接字变慢。

0

我认为这是不可能的。在AS3中没有低级API可以在TCP层上操作字节。但是你可以在更高的层面上实现限速。

例如:在将字节放入Socket的byteArray之前,检查您在过去几秒钟内放置了多少数据。如果此值过高-请延迟操作。


很不幸,由于实现限制,我无法触及服务器部分。我试图避免使用任何中继/代理服务器,但看起来不可避免。 - Jeremy Stanley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接