2017-08-19 14 views
0

Node.jsサーバーとFlash(Flex)アプリケーションの間のソケット接続を確立しようとしています。私は自分で説明できない予期せぬ結果をいくつか持っています。Node.jsサーバーとFlashソケットのテスト

ここに私のコードです。

フレックス:

<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="windowedapplication1_creationCompleteHandler(event)"> 


    <fx:Script> 
     <![CDATA[ 
      import com.pnwrain.flashsocket.FlashSocket; 
      import com.worlize.websocket.WebSocket; 

      import mx.events.FlexEvent; 


      private var _flashSocket:FlashSocket; 
      private var _webSocket:WebSocket; 
      private var _xmlSocket:XMLSocket; 

      protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void 
      { 
        _xmlSocket = new XMLSocket(); 
        _xmlSocket.addEventListener(Event.CLOSE, function():void{trace('close')}); 
        _xmlSocket.addEventListener(DataEvent.DATA, onData); 
        _xmlSocket.addEventListener(Event.CONNECT, function():void{trace('connect');}); 
        _xmlSocket.addEventListener(IOErrorEvent.IO_ERROR, function():void{trace('io error')}); 
        _xmlSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function():void{trace('sec error')}); 
        _xmlSocket.connect("127.0.0.1", 8888);    

      } 

      protected function button1_clickHandler(event:MouseEvent):void 
      { 
       _xmlSocket.send("client test"); 
      } 

      protected function onData(event:DataEvent):void 
      { 
       trace(event.data); 
      } 

     ]]> 
    </fx:Script> 

    <s:VGroup> 
     <s:TextInput id="ti" /> 
     <s:Button label="test" click="button1_clickHandler(event)" /> 
    </s:VGroup> 


</s:WindowedApplication> 

私のシンプルなNode.jsのサーバー:私は私のFlexボタンをクリックしたときので、データは私のサーバーにして自分のサーバーからの私のアプリから送信される

const net = require('net'); 

var server = net.createServer(function(socket) 
{ 
    socket.on("data", function(message){   
     socket.write(message + "\n"); 
    }); 

    socket.on("connect", function(){   // Never triggered 
     console.log("connected to client\n"); 
    }); 

    socket.on("drain", function(){    // Never triggered 
     console.log("drain !\n"); 
    }); 

    socket.on("close", function(){    
     socket = undefined; 
    }); 

    setInterval(function(){ 
     if(socket) 
     { 
      socket.write("test\n"); 
     }  
    }, 5000); 

}).listen(8888, "127.0.0.1"); 

私のアプリので、それは良いようです。

私は5秒間待っているときに予想されるように私のFlexは、「テスト」の文字列を受信しませんが、私はこのようなデータを受信し、1分後に以下の私は私のアプリボタンをクリックしたとき:

test 
test 
test 
test 
..... 
client test 

それはと思われます私のサーバーは何らかの「情報の保持」を行っていますが、理由や理由を説明することはできます(?)。ヘルプ

答えて

0

オクラホマため

おかげで私は(それは常にそうだ?)

を掲示した後、私はメッセージで\0を使用する必要が解決策を見つけることです。

socket.write("test\0"); 

ませ

socket.write("test\n"); 
関連する問題