Как я могу использовать переменную {server.name} в services-config. xml из AIR? - PullRequest
1 голос
/ 13 июля 2020

Я конвертирую приложение из Flex / Fla sh в Flex / AIR. Приложение обменивается сообщениями. Я использую файл services-config. xml для определения каналов и конечных точек.

При использовании определения конечной точки в конфигурации services. xml Обычно я использую;

  <channels>
    <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
        <endpoint uri="http://{server.name}:{server.port}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
      <properties>
        <!-- <legacy-collection>true</legacy-collection> -->
      </properties>
    </channel-definition>
    <channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
        <endpoint uri="rtmp://{server.name}:1935" class="flex.messaging.endpoints.RTMPEndpoint"/>
    </channel-definition>
  </channels>

При работе в AIR это преобразуется в имя SWF-файла (как ни странно, минус первый символ). Мне нужно определить во время выполнения имя сервера.

Я пробовал следующий код в моем разделе завершения создания приложения:

RootDomain = "http://192.168.144.190/";
if (bolTestMode == false) 
{
    var strRTMPuri:String = RootDomain.substr(0, RootDomain.length - 1) + ":1935";
    strRTMPuri = strRTMPuri.toLowerCase().replace("http:","rtmp:");
    ServerConfig.getChannel("my-rtmp").uri = strRTMPuri;
    ServerConfig.getChannel("my-amf").uri = RootDomain.substr(0, RootDomain.length - 1) + ":80";
}

Что, похоже, не работает.

Единственное, что действительно работает, - это изменить файл services-confg. xml на;

  <channels>
    <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
      <endpoint uri="http://192.168.144.190:{server.port}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
      <properties>
        <!-- <legacy-collection>true</legacy-collection> -->
      </properties>
    </channel-definition>
    <channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
     <endpoint uri="rtmp://192.168.144.190:1935" class="flex.messaging.endpoints.RTMPEndpoint"/>
    </channel-definition>
  </channels>

и затем скомпилировать приложение. К сожалению, это означает, что производственная версия приложения должна быть скомпилирована с другим файлом services-config. xml, полученным при тестировании.

То, что я ищу / мне нужно, - это метод определения сервера & порты во время выполнения.

1 Ответ

1 голос
/ 17 июля 2020

Я был почти у цели, когда разместил вопрос, но забыл небольшую деталь.

Я решил это, изменив ServerConfig во время выполнения, используя это в моем сценарии действий. 1004 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...