ОШИБКА SOCKETIO_CONNECTION_REFUSED

#javascript #node.js #angularjs #socket.io

#javascript #node.js #angularjs #socket.io

Вопрос:

Я начинаю использовать NodeJS и Socket.IO . Я пытаюсь настроить базовый пример с HTTP-сервером NodeJS и установить сокет.Подключение ввода-вывода к серверу.

Я также использую angular JS, и в основном я хочу, чтобы, когда пользователь нажимает кнопку, устанавливалось соединение с сервером. Однако, когда я пытаюсь это сделать, я получаю эту ошибку

GET http://localhost/socket.io/?EIO=2amp;transport=pollingamp;t=1404288173776-3 net::ERR_CONNECTION_REFUSED

Вот мой код:

server.js

 var http = require('http');
var server= http.createServer(handler);
var io = require('socket.io')(server);

server.listen(8080);

function handler(req, res) {
    res.writeHead(200);
    res.end('Hello Http');
}

io.on('connection', function (socket){
    socket.emit('news', { hello: 'world' });
    console.log('connected!');
});
  

app.js

 var app = angular.module('testApp', ['ngRoute']);

app.controller('TestCtrl', function ($scope){

    $scope.msg= "";

    $scope.try = function (){

        $scope.msg= "ALO"

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

        socket.on('news', function (data) {
            console.log(data);
        });

    };

});
  

И на моем test.html файл:

 <body ng-controller="TestCtrl">

    <h2>{{msg}}</h2>
    <button ng-click="try()">Try</button>

    <script src="../js/angular.min.js"></script>
    <script src="../js/angular-route.min.js"></script>
    <script src="../js/app.js"></script>

    <script src="../node_modules/socket.io/node_modules/socket.io-client/socket.io.js"></script>

<!-- <script src="/socket.io/socket.io.js"></script> -->

</body>
  

Я думаю, что ошибка может быть связана с путем, который я использую при включении socket.io.js Я пытался также напрямую использовать localhost: 8080 в пути, потому что я читал, что это может быть решением, но это не сработало. Поэтому, пожалуйста, я ценю любую предоставленную помощь. Спасибо!

Комментарии:

1. У меня также была такая же ошибка. После этого сообщения я просто перепроверил URL, который я указал неверно. Спасибо.

Ответ №1:

Я столкнулся с точно такой же проблемой. Я не видел ОШИБКУ_CONNECTION_REFUSED в socket.io @ ~ 0.9. Ошибка появилась после того, как я обновил сокет.ввод-вывод до 1.3.

Я решил это, просто удалив URL из конструктора на стороне клиента:

Изменить

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

Для

 var socket = io();  
  

Как сокет.руководство по вводу-выводу показало:http://socket.io/get-started/chat /

Комментарии:

1. Использование неявного URL-адреса также исправило это для меня, спасибо!

2. Хороший ответ. Просто дополняю то, что говорится в примере: «Обратите внимание, что я не указываю какой-либо URL-адрес при вызове io(), поскольку по умолчанию он пытается подключиться к хосту, который обслуживает страницу».

3. Как насчет использования другого порта или не размещенного на локальном?

Ответ №2:

Если ваш сервер прослушивает порт 8080, вам необходимо подключиться к этому порту.

 var socket = io('http://localhost:8080');
  

И поскольку вы используете относительный путь, сокет.библиотека ввода-вывода будет обслуживаться нормально.

 <script src="/socket.io/socket.io.js"></script>
  

Комментарии:

1. Я пробовал эти два решения раньше (извините, я не упомянул об этом), но я получаю ошибку file not found для socket.io.js путь, вот почему я попробовал другой. Я не знаю, в чем может быть проблема. Я установил сокет. ввод-вывод с помощью npm устанавливает сокет. ввод-вывод и папка node_modules, содержащая ввод-вывод сокета, по какой-то причине находятся в папке «Мои пользователи» в Windows, а не в папке node_modules, которая находится в program files. Может ли это иметь какое-то отношение к проблеме? Я попытался установить глобально, чтобы посмотреть, изменил ли он папку location, но этого не произошло: / Я не знаю, что еще попробовать

Ответ №3:

Оказывается, что сокет.ввод-вывод устанавливался в папку funny, и поэтому он не распознавался и не загружался. Я решил это, создав package.json и объявив там зависимости, чтобы при установке npm он устанавливал папку в нужном месте.

Также Бен Форчун был прав, и я также изменил это…Я надеюсь, что это поможет другим людям, потому что я много боролся, чтобы понять это 🙂

Ответ №4:

Я получал доступ к IP-адресу моего облачного сервера для общения. внезапно сервер перестал работать.Затем я получил эту ошибку опроса. Наконец я понял, что проблема с этим сервером. убедитесь, что ваш сервер включен.

Я изменил IP-адрес на ноль. пожалуйста, укажите адрес вашего сервера

 socket = io.connect('0.0.0.0:8110');
  

Ответ №5:

 const { Server } = require("socket.io");
const app = express();
let port = process.env.PORT || 8080;
const server = http.createServer(app);
server.listen(port, () => console.log("App listening at localhost:"   port));
  

Это работает для меня 🙂

Смотрите документ

Ответ №6:

 // SERVER running on http://localhost:9000

    const PORT = 9000;    
    const http = require('http');
    
    const httpServer = http.createServer()
    
    
    const io = require("socket.io")(httpServer, {
        cors: {
            origin: "http://localhost:3000", // client address 
        },
    });   
    
    
    io.on("connection", (socket) => {
        console.log(socket)
    })
    
    httpServer.listen(PORT);



// CLIENT


    import { io } from 'socket.io-client'
    
    const URL = "http://localhost:9000";
    const socket = io(URL, { autoConnect: false });
    socket.connect();
    console.log(socket)
    
    socket.on("connect_error", (err) => {
        console.log(`connect_error due to ${err.message}`);
    });
  

Сокет должен прослушивать приложение (HTTPServer), а приложение должно прослушивать порт. Не перепутайте это