如何正确设置从AS3空气到nodejs的套接字连接

问题描述:

我在这里发现了很多样本​​,但使用非常旧的节点和adobe air版本的旧帖子。我做了简单的节点js服务器,它正在正常工作 - 使用网络浏览器进行测试。节点JS是6.11版本。如何正确设置从AS3空气到nodejs的套接字连接

var http = require('http'); 
var sockets = []; 
var server = http.createServer(function(req, res) {}); 
server.listen(8080); 
var io = require('socket.io').listen(server); 
io.set('transports', ['websocket','flashsocket']); 
io.sockets.on('connection', function (socket) { 
    sockets.push(socket); 
    socket.on('disconnect', function() { 
     var i = sockets.indexOf(socket); 
     sockets.splice(i, 1); 
    }); 
    socket.on("data",function(d){ 
     console.log('data from flash: ',d); 
    }); 
    socket.write(JSON.stringify({message:"blah blah"})); 
}); 

我的任务是将它连接到AS3 Air应用程序。脚本看起来像这样:

public class CustomSocket extends Socket { 

    public function CustomSocket(host:String = null, port:uint = 0) { 
     super(); 
     configureListeners(); 
     if (host && port) { 
      super.connect(host, port); 
     } 
    } 
    private function configureListeners():void { 
     addEventListener(Event.CLOSE, closeHandler); 
     addEventListener(Event.CONNECT, connectHandler); 
     addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
     addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
     addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); 
    } 
    .... 
} 

它连接到插座没有错误,但没有发送或接收数据正在工作。只有连接事件被激发,就是这样。 ProgressEvent.SOCKET_DATA永远不会被触发。另外,在连接上我发送一些数据到节点,从来没有收到。

有什么想法?

想通了。而不是像网页一样使用socket.io,我必须在nodejs端使用TCP套接字连接。当我创建这样的脚本时:

var net = require('net'); 
var net_server = net.createServer(function(socket) { 
    socket.write('blah blah \n'); 
    socket.on('data', function(chunk) { 

    }); 
    socket.on('error', function(err) {}); 
}); 
net_server.listen(8000); 

有双向通信正在工作。