ERR_CONNECTION_REFUSED от socket.io - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь запустить приложение Node.js.С SSH я могу запустить 'node server.js':

var express = require('express');
var app = express();
var server = app.listen(5431);
app.use(express.static('public'));
console.log("### RUNNING ###");
var socket = require('socket.io');
var io = socket(server);

, и он действительно регистрирует и не выдает ошибок.Но когда я открываю приложение клиент-браузер, я получаю следующий вывод в консоли:

Failed to load resource: net::ERR_CONNECTION_REFUSED
GET http://localhost:5431/socket.io/?EIO=3&transport=polling&t=MWCsv9T net::ERR_CONNECTION_REFUSED

Клиент соединяется с:

var socket = io.connect('http://localhost:5431');

Я пытался соединиться как с IP, так и с доменом, стот же результат.Приложение отлично работало на локальной машине.

Я проверил открытые порты с помощью следующего php-скрипта:

    for($i=0; $i<10000; $i++) {
    portCheck($i);
  }

  function portCheck($port) {
    if(stest('127.0.0.1', $port))
      echo $port . "<br>";
  }

  function stest($ip, $portt) {
    $fp = @fsockopen($ip, $portt, $errno, $errstr, 0.1);
    if (!$fp) {
        return false;
    } else {
        fclose($fp);
        return true;
    }
  }

и получил:

enter image description here

Поскольку в нем указано 5431, я предполагаю, что порт действительно открыт.

Тогда я понятия не имею, что может вызвать эту ошибку.

1 Ответ

0 голосов
/ 02 января 2019
var socket = io.connect('http://localhost:5431');

Это означает, что клиент будет подключаться к локальной машине - где локальная с точки зрения системы, в которой выполняется сценарий.Поскольку скрипт выполняется в браузере, это означает, что ваше приложение должно запускаться на клиентском компьютере, на котором запущен браузер.

Failed to load resource: net::ERR_CONNECTION_REFUSED
GET http://localhost:5431/socket.io/?EIO=3&transport=polling&t=MWCsv9T net::ERR_CONNECTION_REFUSED

Хотя вы явно не говорите это в более позднем утверждении (см. Ниже)) предполагает, что это делается на другой машине, на которой работает ваше приложение.Если ваше приложение работает на хосте A, а ваш браузер на хосте B, то localhost в клиентском браузере (где выполняется скрипт) ссылается на хост B, а не на хост A.

Приложение работало нормальнолокальный компьютер

Это ожидается, поскольку в данном случае localhost - это компьютер, на котором фактически выполняется ваше приложение (это же компьютер для приложения и браузера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...