Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在node.js中HTTP旁边的端口80上提供闪存策略请求_Node.js_Flash_Http_Tcp_Crossdomain.xml - Fatal编程技术网

在node.js中HTTP旁边的端口80上提供闪存策略请求

在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

我希望为来自Flash浏览器客户端的套接字连接提供服务,因此我需要添加对策略请求文件协议的支持。由于防火墙等原因,我无法在默认端口843上运行策略文件请求服务。我唯一的选择是在HTTP服务器旁边的端口80上运行协议

我的应用程序是用node.js编写的,下面的代码可以正常工作:

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);
      }
   })
});