передача данных через сокеты tcp на удаленный сервер с помощью nodejs

Я создаю TCP-модуль Nodejs, серверно-клиентское приложение для отправки данных через сокеты tcp. У меня этот модуль работает на моем локальном хосте без проблем, но когда я отправляю данные с моего локального хоста на удаленный сервер, он не работает. Я получаю странные результаты, потому что я вижу заголовок своих данных в журналах доступа nginx, поэтому я знаю, что данные передаются, но мое серверное приложение не сохраняет данные, как ожидалось. Я явно что-то упускаю. Я пытался поиграться с IP-адресами и несколькими файлами nginx-conf, которые нашел в сети, но безуспешно. Я не уверен, нужно ли мне открывать порт или манипулировать брандмауэром, но я очень ценю любую помощь. Вот приложение node и мои файлы nginx.conf.

TCP-клиентское приложение

/* Dependencies */
var server_external_ip = '77.77.77.277'
var fs = require('fs');
var hl7 = require('simple-hl7');
/* Build TCP Server */
var server = hl7.Server;
var tcpClient = server.createTcpClient();
/* Connection */
tcpClient.connect('127.0.0.1', 6969);
/* Get XML  */
var msg = fs.readFileSync('./data/example.xml').toString();
/* Send Message */
setTimeout(function() {
    tcpClient.send(msg, function(ack) {
      console.log("ACK: ",ack.toString());
      console.log("\nsuccessful transfer");
      tcpClient.close();
    });
}, 500);

сервер можно найти здесь, нажмите здесь но вот код конфигурации..

  /*
      Config class
      vars:
      baseFolder: Where to save the messages
      port      : What port to listen on
      ip        : what ip to listen on
  */
  var Config = new function() {
      this.baseFolder = "data";
      this.port = 6969;
      this.ip = '127.0.0.1';
  }

вот nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

}

в каталоге с поддержкой моих сайтов

upstream backend_nodejs {
  # hash $remote_addr consistent;
  server 192.168.1.41:9696;
  keepalive 512;
}

server {
  listen 80;

  client_max_body_size 16M;
  keepalive_timeout 10;

  location / {
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    proxy_set_header Connection "";
    proxy_http_version 1.1;
    proxy_pass http://backend_nodejs;
  }

}

и, наконец, вот пример моего журнала доступа к nginx

xx.xx.xx.123 - - [11/Mar/2016:16:18:27 -0800] "Connection Established" 400 172 "-" "-" "-"

person Nodedeveloper101    schedule 12.03.2016    source источник


Ответы (1)


Вы путаете tcp и http. Ваше клиентское ‹--> соединение с сервером вообще не имеет ничего общего с nginx. Это чисто nodejs ‹--> nodejs. Вы, вероятно, просто пропустили настройку брандмауэра. Брандмауэр не nginx.

Также у вас есть var server_external_ip = '77.77.77.277' Но вы пытаетесь подключиться локально tcpClient.connect('127.0.0.1', 6969); Должно быть tcpClient.connect('77.77.77.277', 6969);

person Sergey Yarotskiy    schedule 12.03.2016
comment
Итак, вы говорите, что я использую веб-сокеты? если бы я хотел использовать nodejs для отправки данных, думаю, TCP-сокеты должны ли я использовать это? (посмотрите на net.connect()) tutorialspoint.com/nodejs/nodejs_net_module.htm @Сергей Яроцкий - person Nodedeveloper101; 12.03.2016