2011-10-08 3 views
0

Я пытаюсь подключить приложение AIR к socket.io, он просто не работает. Это мой код:Не удается подключить приложение AIR к socket.io

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         creationComplete="creationCompleteHandler(event)"> 

    <s:layout> 
     <s:VerticalLayout /> 
    </s:layout> 

    <fx:Script> 
     <![CDATA[ 
      import com.pnwrain.flashsocket.FlashSocket; 
      import com.pnwrain.flashsocket.events.FlashSocketEvent; 

      import mx.events.FlexEvent; 

      protected var socket:FlashSocket; 


      protected function creationCompleteHandler(event:FlexEvent):void 
      { 
       trace("Connect"); 
       socket = new FlashSocket("ws://mydomain.com:8080/socketFolder/"); 
       socket.addEventListener(FlashSocketEvent.CONNECT, onConnect); 
       socket.addEventListener(FlashSocketEvent.MESSAGE, onMessage); 
       socket.addEventListener(FlashSocketEvent.CLOSE, onDisconnect); 
       socket.addEventListener(FlashSocketEvent.IO_ERROR, onIOError); 
       socket.addEventListener(FlashSocketEvent.SECURITY_ERROR, onSecurityError); 
      } 
      protected function onConnect(event:FlashSocketEvent):void{ 
       trace("connect"); 
      } 
      protected function onDisconnect(event:FlashSocketEvent):void{ 
       trace("disconnect"); 
      } 
      protected function onIOError(event:FlashSocketEvent):void{ 
       trace("onIOError"); 
      } 
      protected function onSecurityError(event:FlashSocketEvent):void{ 
       trace("onSecurityError"); 
      } 
      protected function onMessage(event:FlashSocketEvent):void{ 
       trace("onMessage"); 
      } 
     ]]> 
    </fx:Script> 

</s:WindowedApplication> 

Как вы можете видеть, я использую FlashSocket.

конфигурация Мой сервер:

io.configure(function(){ 
    io.enable('browser client minification'); // send minified client 
    io.enable('browser client etag');   // apply etag caching logic based on version number 
    io.enable('browser client gzip');   // gzip the file 
    io.disable('destroy upgrade'); 
    io.set('log level', 3); 
    io.set('transports', [ 
     'websocket' 
     , 'flashsocket' 
     , 'htmlfile' 
     , 'xhr-polling' 
     , 'jsonp-polling' 
     ]); 
}); 

я получал "уничтожение non-socket.io обновление" в консоли сервера, поэтому я добавил io.disable ('уничтожить обновление');. Я больше не получаю сообщение, но не помог.

В приложении AIR я не получаю никаких ошибок, вызывается любой из прослушивателей событий.

Сервер socket.io работает правильно, так как у меня есть клиент HTML, подключенный к нему. Сервер - это удаленный сервер, а не локальный.

Должен ли я устанавливать любую политику безопасности? Я запускаю приложение AIR из Flash Builder.

Любые идеи будут оценены.

+0

Я только что обновил до socket.io 0.8.5, такой же результат. есть идеи? – oscarm

+0

Я заметил, что в Socket.io 0.8.3 порт по умолчанию был изменен с 843 на 10843. – oscarm

ответ

1

Если вы используете теги с тегами FlashSocket.io 0.7.x, вам следует указать только хост и порт в новой строке сервера.

socket = new FlashSocket("mydomain.com:8080"); 

Дайте ему выстрел и посмотрите, не получите ли вы дальше.

sim

+0

Спасибо за ответ. Я использую socket.io версии 0.8.4. Я получил webSocketError: SYNTAX_ERR: недопустимый url: mydomain.com:8080 ТипError: Ошибка # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект. \t at WebSocket() [/ Пользователи/simeon/Сайты/проекты/web-socket-js/flash-src/WebSocket.as: 62] \t at com.pnwrain.flashsocket :: FlashSocket() Couser Я использовал правильный домен для сервера :) – oscarm

Смежные вопросы