Самый быстрый способ записи в несколько соединений сокетов - PullRequest
2 голосов
/ 05 декабря 2011

Я использую следующий класс для приема входящих соединений от клиентских приложений - используя функцию отправки, я хочу записать одинаковые UTFBytes для каждого клиента одновременно - возможно ли это?а если нет, то какой бы самый быстрый способ последовательной записи в них.

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);
    }

}

1 Ответ

0 голосов
/ 08 июня 2012

Как уже упоминалось @eSniff, вам нужен модуль публикации подписки здесь. Redis был бы лучшим вариантом, поскольку он требует минимальных шагов для настройки. Входящие соединения будут подписаны на очередь, и вы сможете опубликовать данные, чтобы все клиенты получили их одновременно. Пожалуйста, обратитесь к ссылке ниже для лучшего понимания.

http://redis.io/topics/pubsub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...