如何正确设置从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);
有双向通信正在工作。