Вот моя проблема: у меня есть объект NetConnection, подключенный к серверу. Сверху я создаю объект NetStream, и он начинает воспроизводить файл с сервера. Пока что классика.
Теперь мне нужно иметь возможность отправлять некоторые (короткие) сообщения обратно на сервер в различные моменты во время воспроизведения, но, очевидно, с использованием существующего TCP-соединения .
Из того, что я могу прочитать в документах , базовый объект NetConnection поддерживает «двустороннее соединение между клиентом и сервером» и, очевидно, уровень TCP поддерживает его. Я хорошо знаком с сетевыми концепциями TCP, но определенно не с тем, как Flash их реализует.
Это правильно? Можно ли это сделать, используя NetConnection (или какой-то другой механизм)?
Как бы я поступил так (пример был бы великолепен, но концептуальное описание процесса также подойдет). Как именно я могу отправить сообщение от клиента на сервер через NetConnection?
Влияет ли активный объект NetStream каким-либо образом на такую операцию?
Спасибо.
Да, можно.
Полагаю, речь идет о подключении к Flash media Server.
Используйте метод NetConnection.call (), который удаленно выполняет метод сценария на стороне сервера.
public function call(command:String, responder:Responder, ... arguments):void
Вы должны определить этот серверный метод как прототип класса клиента соединения
, например.
Client.prototype.MyMethod = function(arg)
{
trace("Server received " + arg + "\n");
}
Тогда вызов этого метода должен выглядеть так:
var nc:NetConnection;
//initialize net connection and connect
nc.call("MyMethod", null, "Hello, server");
Если вам нужно получить какой-то результат - используйте экземпляр класса Responder вместо null.
Если вам нужен сервер для вызова клиентского метода, используйте серверную функцию «call» для клиентского объекта. В этом случае вам нужно будет определить какой-то объект на стороне клиента, у которого есть метод обратного вызова:
Сторона клиента:
var obj = new Object();
obj.MyCallback = function(arg:Object)
{
trace ("Received message from server: " + arg as String);
}
nc.client = obj;
Сторона сервера:
clientObject.call("MyCallback", null, "Hello, client");
С уважением, Дэйвид.