SocketIO ERR_CONNECTION_REFUSED

Posted

技术标签:

【中文标题】SocketIO ERR_CONNECTION_REFUSED【英文标题】: 【发布时间】:2014-08-22 22:50:54 【问题描述】:

我开始使用 NodeJS 和 Socket.IO。我正在尝试使用 NodeJS http 服务器设置一个基本示例并建立与服务器的 Socket.IO 连接。

我也在使用 Angular JS,基本上我想要的是,当用户按下按钮时,就会建立与服务器的连接。但是,当我尝试它时,我得到了这个错误

GET http://localhost/socket.io/?EIO=2&transport=polling&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 时使用的路径有关工作。所以请,我感谢任何帮助。谢谢!

【问题讨论】:

我也有同样的错误。在这篇文章之后,我只是交叉检查了我提供的 URL 不正确。谢谢。 【参考方案1】:

我遇到了完全相同的问题。我没有在 socket.io@~0.9 中看到 ERR_CONNECTION_REFUSED。在我将 socket.io 升级到 1.3 后,错误浮出水面。

我通过简单地从客户端构造函数中删除 URL 来解决它:

改变

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

var socket = io();  

正如 socket.io 教程所示:http://socket.io/get-started/chat/

【讨论】:

使用隐式 URL 也为我修复了它,谢谢! 不错的答案。只是补充示例中的内容:“请注意,当我调用 io() 时,我没有指定任何 URL,因为它默认尝试连接到为页面提供服务的主机。” 使用不同的端口或不在本地托管呢?【参考方案2】:

如果您的服务器正在侦听端口 8080,您需要连接到该端口。

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

当您使用相对路径时,socket.io 库将可以正常使用。

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

【讨论】:

我之前尝试过这两种解决方案(对不起,我没有提到)但是我得到了 socket.io.js 路径的文件未找到错误,这就是我尝试另一种的原因。我不知道可能是什么问题。我使用 npm install socket.io 安装了 socket.io,并且包含 socket io 的 node_modules 文件夹出于某种原因在我的 windows 上的 users 文件夹中,而不是在程序文件中的 node_modules 文件夹中。这可能与问题有关吗?我尝试全局安装以查看它是否更改了位置文件夹,但没有:/我不知道还能尝试什么【参考方案3】:

原来 socket.io 被安装在一个有趣的文件夹中,因此它没有被识别或加载。我通过创建一个 package.json 并在那里声明依赖项来解决这个问题,这样当我执行 npm install 时,它会将文件夹安装在正确的位置。

Ben Fortune 也是对的,我也对其进行了修改...我希望这对其他人有所帮助,因为我费了很大的力气才弄明白 :)

【讨论】:

【参考方案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));

它对我有用:)

见doc

【讨论】:

以上是关于SocketIO ERR_CONNECTION_REFUSED的主要内容,如果未能解决你的问题,请参考以下文章

gevent-socketio 没有使用我的 @app.route 端点进行 socketio

托管在 Heroku 上的 Flask SocketIO 应用程序不使用 @socketio.on 事件?

Flask-SocketIO 的发射函数线程安全吗?

从 Flask 中的另一个类导入 @socketio.on()

Flask 和 Flask-SocketIO [重复]

Flask-socketio,向另一个命名空间发出事件