2011-12-05 12 views
2

私はクライアントアプリケーションからの着信接続を受け入れるために - 同時に同じクライアントに同じUTFBytesを書きたいsend関数を使用しています - これは可能ですか?もしそうでなければ、それらを連続して書き込む最速の方法は何でしょうか。複数のソケット接続に最速の方法

public class ProjectorClients 
{ 
    private var _serverSocket:ServerSocket; 
    private var _clients:Vector.<Socket> = new Vector.<Socket>; 

    private function ProjectorClients():void 
    { 
     _serverSocket = new ServerSocket(); 
     _serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnect) 
     _serverSocket.bind(888); 
     _serverSocket.listen(); 
    } 

    private function onConnect(e:ServerSocketConnectEvent):void 
    { 
     trace("Client is connected"); 
     e.socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); 
     e.socket.addEventListener(Event.CLOSE, onConnectionClosed); 
     _clients.push(e.socket); 
     trace("Number of connected clients: " + _clients.length); 
    } 

    public function send(command:String):void 
    { 
     for each(var clientSocket:Socket in _clients) 
     { 
      if (clientSocket.connected) 
      { 
       clientSocket.writeUTFBytes(command); 
       clientSocket.flush(); 
      } 
     } 
    } 

    private function onData(e:ProgressEvent):void 
    { 
     trace("data received"); 
    } 

    private function onConnectionClosed(e:Event):void 
    { 
     trace("Client Socket is Closed"); 
     for (var i:int = 0; i < _clients.length; i++) 
     { 
      if (_clients[i] == e.currentTarget) 
      { 
       _clients.splice(i,1); 
       break; 
      } 
     } 
     trace("Number of connected clients: " + _clients.length); 
    } 

} 
+0

あなたは、インフラストラクチャを設定するか、これが展開可能なアプリケーションですされていますか?これがJavaまたは.Netの場合は、Apache/Kafkaのような分散型パブリッシュ/サブスクライブ型メッセージングシステムにサーバーを一度書き込むことをお勧めします。私は、actionScript用のファストキューソリューションがあるかどうかわかりません。 – eSniff

+0

これは、配備可能なas3専用アプリケーションです。先端のおかげで、私は将来の使用のためにこれを研究します。 – davivid

+0

1つのループで書き込みをしてから、2回目の同じループでフラッシュしますか? –

答えて

0

@eSniffで述べたように、ここにパブリッシュサブスクライブモジュールが必要です。 Redisは、セットアップに必要最小限の手順が必要なので、より良い選択肢になります。受信接続はキューに登録され、すべてのクライアントが同時に受信するようにデータを公開することができます。より良い理解のために、下のリンクを参照してください。

http://redis.io/topics/pubsub

関連する問題