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

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

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

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

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

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

  3. Влияет ли активный объект NetStream каким-либо образом на такую ​​операцию?

Спасибо.

1
задан Valeriu Paloş 21 August 2010 в 19:53
поделиться

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» для клиентского объекта. В этом случае вам нужно будет определить какой-то объект на стороне клиента, у которого есть метод обратного вызова:

Сторона клиента:

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

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

2
ответ дан 2 September 2019 в 21:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: