Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Javascript 无法连接到CloudFoundry上的TCP服务器(localhost node.js工作正常)_Javascript_Node.js_Tcp_Cloud Foundry - Fatal编程技术网

Javascript 无法连接到CloudFoundry上的TCP服务器(localhost node.js工作正常)

Javascript 无法连接到CloudFoundry上的TCP服务器(localhost node.js工作正常),javascript,node.js,tcp,cloud-foundry,Javascript,Node.js,Tcp,Cloud Foundry,我无法连接到在CloudFoundry上运行的TCP服务器示例。在本地node.js安装上运行我的app.js文件时,它工作正常。具体地说,当我使用vmc推送运行CloudFoundry时,服务启动并且不会崩溃。一些IP连接到它,断开连接,据我所知,服务一直在运行 我无法使用“telnet”或“nc”连接到它(注意,当指向localhost node.js服务器时,这两种方法都可以正常工作) 这失败了: > nc themagicsandbox2.cloudfoundry.com 8124

我无法连接到在CloudFoundry上运行的TCP服务器示例。在本地node.js安装上运行我的app.js文件时,它工作正常。具体地说,当我使用vmc推送运行CloudFoundry时,服务启动并且不会崩溃。一些IP连接到它,断开连接,据我所知,服务一直在运行

我无法使用“telnet”或“nc”连接到它(注意,当指向localhost node.js服务器时,这两种方法都可以正常工作)

这失败了:

> nc themagicsandbox2.cloudfoundry.com 8124
这很有效

> nc localhost 8124
hello from TCP server! (intended reply)
我的代码在这里提交,CloudFoundry stdout.log在下面提交

代码:

stdout.log(CloudFoundry):

stdout(localhost node.js):


这是因为请求是使用主机头路由到应用程序的,netcat或telnet都不发送。当使用任何一个主机头发送请求时,您可能会从路由器返回504。

我试图通过使用UDP绕过这个问题,UDP是单向的,并且可以满足此服务器的需要,它可能会导致o使用仅接收协议接收数据

但是,UDP永远不会在CloudFoundry.com上工作,因为端口没有打开

请参见此处的注释线程:


因此,看来我又回到了通过HTTP向该服务器发送数据的阶段。毕竟,摆脱HTTP握手是编写该TCP服务器的根本原因。

我认为问题在于TCP客户端和cloudFoundry应用程序之间存在代理或HTTP重定向器

Dan Highman的回答是,重定向由主机“头”控制,其前提是重定向器假设您的客户端正在使用HTTP协议,并且有一个“主机”头记录,以允许它确定您要与哪个cloudFoundry应用程序对话


我想你是在问如何获得到应用程序的非HTTP TCP连接。我也没有弄清楚。VCAP_APP_主机环境变量提供了一个私有IP地址(即在私有10.0.0.0子网中),因此从公共互联网到云主机没有用。(这可能有助于同一个云主机网络提供的应用程序之间的通信。)

是的,没错,我只得到504(连接超时),谢谢。我将编写一个使用主机头的测试程序。嗨,丹,我没有忘记你。我没有按“接受”因为我还没有根据你的建议实现一个可行的解决方案。我现在就去做。好的。谢谢!我也不明白我在stdout.log中看到的连接是什么。当然,你在stdout中看到的连接是路由器用来连接到你的应用程序的内部端口,就像你使用某些东西时一样与Apache或Nginx一样,UDP是双向的,只是不面向会话或流。但由于TCP流不支持的原因,它无法工作。
myTrace('loaded'); // myTrace prepends timestamp to text and sends to console.log

var tcpServer = require('net').createServer(function(sock) { //'connection' listener
    sock.on('connect', function() {
        myTrace('client ' + sock.remoteAddress + ':' + sock.remotePort +' connected');
        sock.write('hello from TCP server!\r\n');
        sock.pipe(sock);
      });

    sock.on('end', function() {
        myTrace('client disconnected');
      });
  });



tcpServer.listen(8124, process.env.VCAP_APP_HOST || "localhost");

tcpServer.on('listening', function() {
      myTrace('server is listening - bound!');
    });

tcpServer.on('error', function(err) {
     myTrace('server err: ' + err);
     if (err.code == 'EADDRINUSE') {
       myTrace('Address in use, retrying ...');
       setTimeout(function() {
           tcpServer.close(function (err) {
               myTrace('server.close: ' + err);
             });
           tcpServer.listen(SLIDEIN_TCP_PORT, process.env.VCAP_APP_HOST || "localhost");
         }, 1000);
     }
  });

tcpServer.on('close', 
          function() {
            myTrace('server has closed');
             });
Getting file contents... OK

Fri Mar 15 2013 11:59:02 GMT+0000 (UTC) loaded
Fri Mar 15 2013 11:59:02 GMT+0000 (UTC) server is listening - bound!
Fri Mar 15 2013 11:59:03 GMT+0000 (UTC) client 172.30.50.10:31840 connected
Fri Mar 15 2013 11:59:03 GMT+0000 (UTC) client disconnected
Fri Mar 15 2013 12:57:39 GMT+0100 (CET) loaded
Fri Mar 15 2013 12:57:39 GMT+0100 (CET) server is listening - bound!
Fri Mar 15 2013 12:57:53 GMT+0100 (CET) client 127.0.0.1:52260 connected
Fri Mar 15 2013 12:57:59 GMT+0100 (CET) client disconnected
Fri Mar 15 2013 12:58:00 GMT+0100 (CET) client 127.0.0.1:52261 connected
Fri Mar 15 2013 12:58:01 GMT+0100 (CET) client disconnected