Могу ли я отправлять сообщения через базовое NetConnection принимающего (воспроизводящего) объекта NetStream?
Вот моя проблема: у меня есть объект NetConnection, подключенный к серверу. Сверху я создал объект NetStream, и он начал воспроизводить файл с сервера. Классика пока что.
Теперь мне нужно иметь возможность отправлять некоторые (короткие) сообщения обратно на сервер, в различные моменты во время воспроизведения, но, очевидно, используя существующее TCP-соединение.
Из того, что я могу прочитать в документации, базовый объект NetConnection поддерживает "двустороннее соединение между клиентом и сервером" и, очевидно, уровень TCP поддерживает его. Я хорошо знаком с сетевыми концепциями TCP, но определенно не с тем, как Flash их реализует.
Это правильно? Можно ли это сделать, используя NetConnection (или какой-то другой механизм)?
Как бы я поступил так (пример был бы великолепен, но концептуальное описание процесса также подойдет). Как именно я могу отправить сообщение от клиента на сервер через NetConnection?
Влияет ли активный объект NetStream каким-либо образом на такую операцию?
Благодарю.
1 ответ
Да, ты можешь.
Полагаю, речь идет о подключении к 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" для объекта client. В этом случае вам нужно определить некоторый объект на стороне клиента, который имеет метод обратного вызова:
Сторона клиента:
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");
С уважением, Дэвид.