1. 帶寬計算
FMS內置了帶寬檢測的特性(被稱做"native bandwidth detection"),要進行帶寬檢測,客戶端只要在成功鏈接到服務器以後調用NetConnection.call("checkBandwidth")。
簡單步驟以下:
a. 服務器端容許帶寬檢測:編輯Application.xml文件 <BandwidthDetection enabled="true"> ,該參數默認是開啓的,其實不用專門設,只是須要確認一下是否被關閉了。
b. 實現客戶端代碼以下: php
class NetConnectionClient { public function onBWCheck(... rest):Number { return 0; } public function onBWDone(... rest):void { var p_bw:Number; var bwUnit:String=" Kbps"; if (rest.length > 0) p_bw = rest[0]; if (p_bw>1024){ p_bw=Math.round((p_bw/1024)*1000)/1000; bwUnit=" Mbps"; } trace("bandwidth = " + p_bw + bwUnit); } }
必定要注意:兩個方法參數前面帶的3個點,那是FLEX書寫的格式,代表動態參數。html
注:checkBandwidth() 方法屬於服務器上的Client類。
以上onBWCheck()和onBWDone()方法在NetConnection.client中定義。
大體原理以下:客戶端調用nc.call("checkBandwidth", null);以後,服務器端向客戶端發送一批數據,客戶端的onBWCheck()被自動調用,該方法必須返回值(即便是0)用戶向服務器端代表已經收到數據。當服務器端完成帶寬檢測後就會調用onBWDone(),該方法有4個參數,第一個參數是以Kbps爲單位的帶寬值,第2、三個參數未使用,第四個參數是以毫秒爲單位的網絡延遲。服務器
2. 帶寬限制
a.設置帶寬限制
clientObject.setBandwidthLimit(iServerToClient, iClientToServer)
參數:
iServerToClient,iClientToServer 都是Number類型,單位bps,0表示保持當前設置不變。前者表示服務器端到客戶端的帶寬,後者表示客戶端到服務器端的帶寬。setBandwidthLimit不能設置超過Application.xml中設置的帶寬限制值。
示例:網絡
application.onConnect = function(newClient, serverToClient, clientToServer)
{
newClient.setBandwidthLimit(serverToClient, clientToServer);
application.acceptConnection(newClient);
}
b.獲取帶寬限制
clientObject.getBandwidthLimit(iDirection)
參數: iDirection 一個整數指定鏈接的方向: 0 表示客戶端到服務端,1 表示服務端到客戶端。
返回: 一個整數表示每秒的字節數
示例:app
application.onConnect = function(newClient){ var clientToServer - newClient.getBandwidthLimit(0); var serverToClient = newClient.getBandwidthLimit(1); };
參考:spa