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);
}
}
あなたは、インフラストラクチャを設定するか、これが展開可能なアプリケーションですされていますか?これがJavaまたは.Netの場合は、Apache/Kafkaのような分散型パブリッシュ/サブスクライブ型メッセージングシステムにサーバーを一度書き込むことをお勧めします。私は、actionScript用のファストキューソリューションがあるかどうかわかりません。 – eSniff
これは、配備可能なas3専用アプリケーションです。先端のおかげで、私は将来の使用のためにこれを研究します。 – davivid
1つのループで書き込みをしてから、2回目の同じループでフラッシュしますか? –