0
我有一個Vagrant框設置爲從內部端口5000到外部端口8081端口轉發socket.io應用程序;當我嘗試從客戶端連接時,它開始長時間輪詢連接,但是我沒有看到來自服務器的任何響應,並且服務器應用程序從未註冊過連接嘗試。連接不會失敗或返回任何錯誤響應代碼,但它只是返回空白響應的200代碼。Socket.io和Vagrant無法建立websocket連接
// 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(', '));
});
相同的應用程序的工作原理,當我試圖從直接我的電腦上運行的應用程序連接起來,所以我的代碼似乎並沒有在這裏是問題就好了,尤其是考慮到它是如何基本上覆制的基本在文檔中的示例;不確定如何從這裏解決這個問題。
你打開了TCP端口轉發而不是http? Web套接字使用TCP而不是HTTP。 –
@JeffSloyer Vagrant轉發的端口默認爲TCP,HTTP協議甚至不涉及到Vagrant的網絡設置IIRC。 – moberemk
你可以嘗試在你的流浪vm上做一個本地請求,以確保事情正常工作嗎? –