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

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

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

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

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

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

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

Спасибо.

1 Ответ

2 голосов
/ 25 августа 2010

Да, вы можете.

Полагаю, речь идет о подключении к Flash Media Server.

Используйте метод NetConnection.call (), который удаленно выполняет метод сценария на стороне сервера.

public function call(command:String, responder:Responder, ... arguments):void

Вы должны определить этот метод на стороне сервера как прототип класса клиента соединения

1010 *, например *

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

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

...