2011-10-08 4 views
0

AIR 응용 프로그램을 socket.io에 연결하려고하는데 작동하지 않습니다. 이 내 코드입니다 : 당신은 내가 FlashSocket를 사용하고 볼 수 있듯이Cant가 socket.io에 AIR 응용 프로그램을 연결합니다.

<?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> 

.

내 서버 구성은 다음과 같습니다

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 응용 프로그램에서 모든 오류가 발생하지 않으며 이벤트 리스너가 호출되었습니다.

HTML 클라이언트가 연결되어있어 socket.io 서버가 올바르게 실행되고 있습니다. 서버가 로컬 서버가 아닌 원격 서버입니다.

보안 정책을 설정해야합니까? Flash Builder에서 AIR 응용 프로그램을 실행하고 있습니다.

어떤 아이디어라도 감사하겠습니다.

+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 TypeError : 오류 # 1009 : null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다. \t WebSocket() [com.pnwrain.flashsocket :: FlashSocket()에서 WebSocket() [/ Users/simeon/Sites/projects/web-socket-js/flash-src/올바른 도메인 서버 :) – oscarm