在node.js中HTTP旁边的端口80上提供闪存策略请求
我希望为来自Flash浏览器客户端的套接字连接提供服务,因此我需要添加对策略请求文件协议的支持。由于防火墙等原因,我无法在默认端口843上运行策略文件请求服务。我唯一的选择是在HTTP服务器旁边的端口80上运行协议 我的应用程序是用node.js编写的,下面的代码可以正常工作:在node.js中HTTP旁边的端口80上提供闪存策略请求,node.js,flash,http,tcp,crossdomain.xml,Node.js,Flash,Http,Tcp,Crossdomain.xml,我希望为来自Flash浏览器客户端的套接字连接提供服务,因此我需要添加对策略请求文件协议的支持。由于防火墙等原因,我无法在默认端口843上运行策略文件请求服务。我唯一的选择是在HTTP服务器旁边的端口80上运行协议 我的应用程序是用node.js编写的,下面的代码可以正常工作: var httpServer = http.createServer(); net.createServer(function(socket){ httpServer.emit('connection', soc
var httpServer = http.createServer();
net.createServer(function(socket){
httpServer.emit('connection', socket);
}).listen(80);
我在端口80上打开了一个套接字服务器,现在我只在httpServer上发出连接事件,到目前为止没有问题。现在我想检查新套接字是否是一个策略文件请求,它将通过TCP连接发送普通字符串
。当我注意到这个字符串时,我知道它不是HTTP,我可以返回跨域文件并关闭套接字。因此,我现在尝试的是:
net.createServer(function(socket){
socket.once('readable', function(){
var chunk = socket.read(1);
// chunk[0] === 60 corresponds to the opening bracket '<'
if(chunk !== null && chunk[0] === 60) {
socket.end(crossdomain);
} else {
socket.unshift(chunk);
httpServer.emit('connection', socket);
}
});
}).listen(80);
当套接字发出数据事件时,套接字的readyState已“关闭”,httpServer已引发clientError事件。我到处找,没有找到解决办法。我也不想通过另一个套接字将数据传输到另一个本地运行HTTP服务器的端口,因为这会增加很多不必要的开销。在node.js中有没有一种干净的方法可以做到这一点?我在node.js版本0.10.26上测试了所有这些功能。可能重复的
httpServer.on('connection', function(socket){
socket.once('data', function(chunk){
if(chunk[0] === 60) {
socket.end(crossdomain);
}
})
});