Могу ли я отправлять сообщения через базовое NetConnection принимающего (воспроизводящего) объекта NetStream?

Вот моя проблема: у меня есть объект NetConnection, подключенный к серверу. Сверху я создал объект NetStream, и он начал воспроизводить файл с сервера. Классика пока что.

Теперь мне нужно иметь возможность отправлять некоторые (короткие) сообщения обратно на сервер, в различные моменты во время воспроизведения, но, очевидно, используя существующее TCP-соединение.

Из того, что я могу прочитать в документации, базовый объект NetConnection поддерживает "двустороннее соединение между клиентом и сервером" и, очевидно, уровень TCP поддерживает его. Я хорошо знаком с сетевыми концепциями TCP, но определенно не с тем, как Flash их реализует.

  1. Это правильно? Можно ли это сделать, используя NetConnection (или какой-то другой механизм)?

  2. Как бы я поступил так (пример был бы великолепен, но концептуальное описание процесса также подойдет). Как именно я могу отправить сообщение от клиента на сервер через NetConnection?

  3. Влияет ли активный объект 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");

С уважением, Дэвид.

Другие вопросы по тегам