tutorial socket example node.js socket.io appfog

node.js - example - Código de respuesta inesperado: error 502 al usar socket.io con AppFog



socket io tutorial (1)

AppFog no soporta websockets todavía. Tras la reciente adquisición de Nodester, anunciaron que llegaría en unos meses.

Al agregar io.set(''transports'', [''xhr-polling'']); solo está configurando el transporte a largo ajax de sondeo. De forma predeterminada, Socket.io determina el mejor transporte según las capacidades del navegador y la conexión actual. Websockets es ideal, cuando está disponible, pero si no es Socket.io, volverá al sondeo xhr entre otros transportes.

Recibí el mismo 502 unexpected response / bad gateway error de 502 unexpected response / bad gateway error de 502 unexpected response / bad gateway incorrecto cuando utilizo CloudFlare, que tampoco puede establecer conexiones a través de su infraestructura basada en nginx (tenga en cuenta que a partir de 2014, Cloudflare puede usar proxy para los sockets web si está en un plan premium).

El error

Cuando el usuario abre http://sync.aws.af.cm/ , la consola de JavaScript de Google Chrome muestra (en unos pocos segundos):

Unexpected response code: 502 error

La aplicación debe recordar el contenido del área de texto incluso después de que el usuario actualice la página. La aplicación funciona localmente, pero no cuando la subo a AppFog, y sospecho que el problema es el error 502.

¿Sabes qué podría causar este error en este caso?

Lo que he intentado

Intenté cambiar la ruta del script src=<path_to_socket_io> en mi cliente de /socket.io/socket.io.js a node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js como se describe here , pero no ayudó.

También intenté servir la aplicación en Heroku en lugar de AppFog, pero en ese caso seguí encontrando el problema descrito here a pesar de que especifiqué la versión 0.9.6 de socket.io.

También he mirado las siguientes preguntas, pero los comentarios hasta ahora no parecen ayudarme.

socket.io creando 502 Bad Gateway on connect / websocket inválido

Socket.IO node.js conexión websocket no válido puerto 8081

socket.io con node.js no funciona como se esperaba

Código de servidor relevante

Aquí está el código del servidor relevante:

var server = http.createServer(function (req, res) { ... }); var io = require(''socket.io'').listen(server); // Define events that can be triggered by the client io.sockets.on(''connection'', function (socket) { socket.on(''setServerVariable'', function (value) { ... }); ... }); server.listen(process.env.VCAPP_APP_PORT || 3000);

Código de cliente relevante

<script src="/socket.io/socket.io.js"></script> <script> window.onload = function () { ... var socket = io.connect(window.location.hostname); socket.emit(''getServerVariable''); ... }; ...

Registro del servidor

$ af logs sync ====> /logs/stdout.log <==== info: socket.io started debug: served static content /socket.io.js debug: client authorized info: handshake authorized veNnUVtoDTIz-oudG7Pa debug: setting request GET /socket.io/1/websocket/veNnUVtoDTIz-oudG7Pa debug: set heartbeat interval for client veNnUVtoDTIz-oudG7Pa warn: websocket connection invalid info: transport end (undefined) debug: set close timeout for client veNnUVtoDTIz-oudG7Pa debug: cleared close timeout for client veNnUVtoDTIz-oudG7Pa debug: cleared heartbeat interval for client veNnUVtoDTIz-oudG7Pa debug: served static content /socket.io.js debug: client authorized info: handshake authorized 6AKyhROUNjqujk_uG7Pb debug: setting request GET /socket.io/1/websocket/6AKyhROUNjqujk_uG7Pb debug: set heartbeat interval for client 6AKyhROUNjqujk_uG7Pb warn: websocket connection invalid info: transport end (undefined) debug: set close timeout for client 6AKyhROUNjqujk_uG7Pb debug: cleared close timeout for client 6AKyhROUNjqujk_uG7Pb debug: cleared heartbeat interval for client 6AKyhROUNjqujk_uG7Pb debug: setting request GET /socket.io/1/xhr-polling/6AKyhROUNjqujk_uG7Pb?t=1348504130465 debug: setting poll timeout debug: client authorized for debug: clearing poll timeout debug: xhr-polling writing 1:: debug: set close timeout for client 6AKyhROUNjqujk_uG7Pb debug: setting request GET /socket.io/1/xhr-polling/6AKyhROUNjqujk_uG7Pb?t=1348504130724 debug: setting poll timeout debug: discarding transport debug: cleared close timeout for client 6AKyhROUNjqujk_uG7Pb debug: xhr-polling received data packet 5:::{"name":"getServerVariable"} debug: clearing poll timeout debug: xhr-polling writing 5:::{"name":"printLog"} debug: set close timeout for client 6AKyhROUNjqujk_uG7Pb server.js: getServerVariable: debug: setting request GET /socket.io/1/xhr-polling/6AKyhROUNjqujk_uG7Pb?t=1348504130980 debug: setting poll timeout debug: clearing poll timeout debug: xhr-polling writing ���23���5:::{"name":"printLog"}���39���5:::{"name":"setItemValue","args":[""]}���23���5:::{"name":"printLog"} debug: set close timeout for client 6AKyhROUNjqujk_uG7Pb debug: discarding transport debug: cleared close timeout for client 6AKyhROUNjqujk_uG7Pb debug: setting request GET /socket.io/1/xhr-polling/6AKyhROUNjqujk_uG7Pb?t=1348504131261 debug: setting poll timeout debug: discarding transport debug: cleared close timeout for client 6AKyhROUNjqujk_uG7Pb debug: clearing poll timeout debug: xhr-polling writing 8:: debug: set close timeout for client 6AKyhROUNjqujk_uG7Pb debug: xhr-polling closed due to exceeded duration debug: setting request GET /socket.io/1/xhr-polling/6AKyhROUNjqujk_uG7Pb?t=1348504151659 debug: setting poll timeout debug: discarding transport debug: cleared close timeout for client 6AKyhROUNjqujk_uG7Pb