在Node.js服务器上使用socket.io进行ERR_CONNECTION_REFUSED

时间:2014-12-28 03:50:28

标签: javascript node.js sockets socket.io

我使用Node.js进行基本的客户端 - 服务器设置:

服务器

var port = 8000;
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app).listen(port);
var io = require('socket.io').listen(server);

app.use(express.static(__dirname + '/site'));
app.get('/', function(req, res) {
    res.sendFile(__dirname + '/site/index.html');
});

server.listen(port, function() {
    console.log("Listening on port " + port + "...");
});

io.on('connection', function(socket) {
    console.log("A user connected");
});

客户端

var socket = io.connect("http://72.53.66.228:8000");

socket.on('connect', function() {
    console.log("Connected.");
});

但是,我在浏览器的控制台中一直收到此错误,我不确定原因:

GET http://72.53.66.228:8000/socket.io/?EIO=3&transport=polling&t=1419738402131-5 net::ERR_CONNECTION_REFUSED

我还应该注意到我正在运行一个Apache网络服务器而我正在使用ProxyPass指令让Node.js服务a subdirectory

1 个答案:

答案 0 :(得分:2)

主要问题是路径。由于Apache只代理/ CAH /。 。 。路径。

io.connect("http://72.53.66.228/CAH");的问题在于socket.io执行了一个'切割器'技巧,它将/ CAH解释为空间而不是路径。

解决方案是设置路径选项:io.connect({path:'/CAH/socket.io'}),这会导致socket.io客户端连接到正确的URL。