2015-05-24 15 views
5

Ich habe eine Anwendung mit socket.io, und funktioniert nicht von mobilen Chrom (auf Android und iOS). Ich kann sehen, dass die im Browser ausgeführt wird. Aber meine serverseitigen console.log-Anweisungen in socket.on() werden nicht ausgeführt, daher denke ich, dass Nachrichten nicht da sind. Ich sehe auch keine Fehler in der Konsole.Socket.emit funktioniert nicht in mobilen Chrom (aber es funktioniert im Inkognito-Modus)

Interessanterweise funktioniert alles im Inkognito-Modus, plus alle Modi in anderen mobilen Browsern wie Safari.

Alle Lösungen oder Hilfe beim Debuggen wäre hilfreich.

EDIT:

Client-Seite CODE

$(document).ready(function(){ 
    socket = io(); 
    $(".check").on("submit", function(event){ 
     event.preventDefault(); 
     ga('send','event','evt','evt123'); 
     socket.emit('checkRoom', { rId: "12345", pId: "johndoe"}); 
    }); 
}); 

Server-Seite CODE

io.on('connection', function(socket) { 
    console.log('a user connected'); 

    socket.on('check',function(e){ 
     console.log('Entered check'); 
     socket.emit('check','server message'); 
    }); 
}); 

EDIT2:

I angegeben manuell die socket.io-1.3.5.js-Datei auf der Client-Seite (anstelle der Verwendung der Standard /socket.io/socket.io.js) und begann zu sehen Dieser Fehler wird in der Konsole angezeigt:

+0

Wir werden wahrscheinlich den entsprechenden Code für uns brauchen, um eine Idee zu bekommen, was hier vor sich geht. – jfriend00

+0

Wie genau sehen Sie, dass "socket.emit" vom Client funktioniert? Hast du eine "console.log" direkt davor oder danach gesetzt? Erhalten Sie immer noch "eine Benutzerverbindung" auf dem Server, was bedeutet, dass der Socket zwar eine Verbindung herstellt, aber vom Client nicht empfangen wird? Versuchen Sie ein paar 'socket.emit/on ('test')' (mit entsprechenden Konsolenprotokollnachrichten) auf Server und Client, die ohne irgendeine Interaktion ausgelöst werden, nur um zu sehen, ob die Kommunikation zumindest beim ersten Kontakt stattfindet, oder ob die Probleme beginnen später. – laggingreflex

+0

@laggingreflex: Ich habe Breakpoints verwendet, um zu sehen, dass der Code zu "socket.emit" kommt. Ich habe mit sehr einfachem Code versucht, um zu überprüfen, ob der erste Kontakt passiert, und ich kann sehen, dass Nachrichten nicht zum Server gelangen. –

Antwort

0

Einige der Mobilfunknetz-Proxy-Anforderungen über Port 80, die Web-Sockets unterbrechen können. Das würde nicht erklären, warum es in anderen Browsern oder inkognito funktionieren würde, aber Sie können diese Hypothese testen, indem Sie Ihren Server und Ihren Client dazu bringen, sich über einen anderen Port zu verbinden, z. 81.

Verwandte Themen