CORS con socket.io

Estoy teniendo problemas con CORS en una aplicación node.js usando Express.io. Estoy alojando el cliente socket.io js de forma remota, ya que esto debe funcionar como una aplicación remota.

 

Está alojado en OpenShift

server.js:

 var ipaddr = process.env.OPENSHIFT_NODEJS_IP || "localhost"; var port = process.env.OPENSHIFT_NODEJS_PORT || 8080; var express = require('express.io'); // magical express.io var app = express(); // Enables CORS var enableCORS = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, *'); // intercept OPTIONS method if ('OPTIONS' == req.method) { res.send(200); } else { next(); }; }; app.configure(function() { // enable CORS! app.use(enableCORS); }); app.http().io(); app.io.set('origins', '*:*'); //.... other stuff app.listen(port, ipaddr); 

Luego en el cliente:

 var socket = io.connect(window.chat_url); 

Cuando ejecuto el cliente desde localhost: 8888 con el servidor localhost: 8080 socket.io funciona bien.

Cuando ejecuto el cliente desde localhost: 8888 y el servidor en odechat-latestsightings.rhcloud.com, socket.io se agota:

Firebug: GET http://nodechat-latestsightings.rhcloud.com:8888/socket.io/1/?t=1391542144169 1m 16s

Las otras rutas funcionan bien: GET http://nodechat-latestsightings.rhcloud.com/rooms 200 OK 664ms

Simplemente no puedo entender esto

http://nodechat-latestsightings.rhcloud.com/socket.io/1/?t=1391542144169 parece funcionar bien

es decir, a pesar del número de puerto en la url, ¿a qué puerto está vinculado?

Además, si su servidor está en openshift, entonces debe enlazar al puerto: 8000 para usar websockets, ya que ese es el proxy inverso nginx del puerto de openshift que tiene acceso público.

Puede leer más desde aquí: https://developers.openshift.com/en/managing-port-binding-routing.html