我已经设置了一个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(', '));
});
当我尝试从直接在我的电脑上运行的应用程序进行连接时,相同的应用程序工作得很好,所以我的代码似乎不是这里的问题,特别是考虑到它是怎么回事基本上复制了文档中的基本示例;不确定如何从这里解决这个问题。
答案 0 :(得分:2)
当你在同一个代码库中处理两个不同的问题时,这是一个非常愚蠢的错误。这是破解的客户端代码行:
distinguishedName=*word*
请注意,var socket = io('127.0.0.1:8081/?access_token=1d845e53c4b4bd2e235a66fe9c042d75ae8e3c6ae', {path: '/auth/socket.io'});
键设置为指向子目录path
,这是我工作中的一个剩余部分,用于获取nginx文件夹代理服务器正在处理的内部端口。< / p>