Der Fehler
Wenn der Benutzer http://sync.aws.af.cm/ öffnet, die Google Chrome JavaScript-Konsole zeigt (innerhalb weniger Sekunden):Unexpected Antwortcode: 502 Fehler bei der Verwendung von socket.io mit AppFog
Unexpected response code: 502 error
Die App sollte sich den Inhalt des Textbereichs merken, auch nachdem der Benutzer die Seite aktualisiert hat. Die App funktioniert zwar lokal, aber nicht, wenn ich sie in AppFog hochlade, und ich vermute, dass das Problem der Fehler 502 ist.
Wissen Sie, was diesen Fehler in diesem Fall verursachen könnte?
Was ich versucht habe
ich in meinem Klienten /socket.io/socket.io.js
-node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
wie here den script src=<path_to_socket_io>
Weg versucht zu ändern, aber es half nicht.
Ich versuchte auch die App bei Heroku statt AppFog, aber in diesem Fall lief ich weiter in das Problem here beschrieben, obwohl ich socket.io Version 0.9.6 angegeben.
Ich habe mir auch die folgenden Fragen angeschaut, aber die Kommentare scheinen mir bisher nicht zu helfen.
socket.io creating 502 Bad Gateway on connect/websocket invalid
Socket.IO node.js websocket connection invalid port 8081
socket.io with node.js not working as expected
Relevante Servercode
Hier ist der relevante Code-Server:
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);
Relevante Client-Code
<script src="/socket.io/socket.io.js"></script>
<script>
window.onload = function() {
...
var socket = io.connect(window.location.hostname);
socket.emit('getServerVariable');
...
};
...
Server-Protokoll
$ 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
BESCHLOSSEN: Wie hier beschrieben: http://stackoverflow.com/questions/11350279/socket-io-does-not-work-on-firefox-chrome diesen Code Hinzufügen das Problem behoben: io .configure ('Entwicklung', Funktion() { io.set ('transports', ['xhr-polling']); }); Aber ich verstehe nicht warum. Nun scheint meine Frage ein Duplikat einer bestehenden Frage zu sein. Wie schließe ich diese Frage und verknüpfe sie mit der anderen Frage? –
Dies ist nicht das gleiche Problem. Sie können aus dem Node.js-Protokoll in der anderen Frage sehen, dass die Anwendung über Websockets handshaking vor dem Zurückfallen, während Ihre eine ungültige Verbindung von Anfang an behauptet. –