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 事件?