Socket.io和Vagrant无法建立websocket连接

时间:2015-07-20 15:57:38

标签: node.js sockets websocket socket.io vagrant

我已经设置了一个Vagrant盒,用于将socket.io应用程序从内部端口5000转发到外部端口8081;当我尝试从客户端连接时,它开始长时间轮询连接,但我没有看到服务器的任何响应,服务器应用程序从不注册连接尝试。虽然连接没有失败或返回任何错误响应代码,但它只返回一个带有空白响应的200代码。

// Import utilities
var http = require('http'),
    socketIO = require('socket.io'),
    querystring = require('querystring');

// Init servers/external connections
var server = http.createServer(function baseHandler(req, res) {
        // console.log(req.headers);
        res.writeHead(200);
        res.end(JSON.stringify({
            message: 'This server only supports WebSocket connections'
        }));
    }),
    io = socketIO(server);

server.listen(process.env.socket_port || 5000, function() {
    var sockets = [];
    console.log('App connected');

});

io.on('connection', function (socket) {
    console.log('Socket connected');
    console.log('Socket in rooms '+ socket.rooms.join(', '));
});

当我尝试从直接在我的电脑上运行的应用程序进行连接时,相同的应用程序工作得很好,所以我的代码似乎不是这里的问题,特别是考虑到它是怎么回事基本上复制了文档中的基本示例;不确定如何从这里解决这个问题。

1 个答案:

答案 0 :(得分:2)

当你在同一个代码库中处理两个不同的问题时,这是一个非常愚蠢的错误。这是破解的客户端代码行:

distinguishedName=*word*

请注意,var socket = io('127.0.0.1:8081/?access_token=1d845e53c4b4bd2e235a66fe9c042d75ae8e3c6ae', {path: '/auth/socket.io'}); 键设置为指向子目录path,这是我工作中的一个剩余部分,用于获取nginx文件夹代理服务器正在处理的内部端口。< / p>