2015-05-24 10 views
5

Mam aplikacji przy użyciu socket.io i socket.emit() nie pracuje z telefonu chromu (na Androida i iOS). Widzę, że socket.emit() jest wykonywane w przeglądarce. Ale moje instrukcje console.log po stronie serwera w socket.on() nie są uruchomione, więc myślę, że komunikaty się nie pojawiają. Nie widzę też żadnych błędów w konsoli.socket.emit nie działa w telefonie chromu (ale działa w trybie incognito)

Co ciekawe, wszystko działa poprawnie w trybie incognito, a także we wszystkich trybach w innych przeglądarkach mobilnych, takich jak Safari.

Pomocne mogą być dowolne rozwiązania lub pomoc przy debugowaniu.

EDIT:

kod klienta SIDE

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

KOD Server Side

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:

ręcznie określony plik socket.io-1.3.5.js po stronie klienta (zamiast korzystania domyślny /socket.io/socket.io.js) i zaczął widzieć ten błąd w konsoli:

+0

Będziemy prawdopodobnie trzeba zobaczyć odpowiedni kod dla nas ma jakiś pomysł co może być tutaj dzieje. – jfriend00

+0

Jak dokładnie widzisz, że 'socket.emit' działa z klienta? Czy wstawiłeś 'console.log' tuż przed lub po nim? Czy nadal uzyskujesz "połączenie użytkownika" na serwerze, co oznacza, że ​​gniazdo łączy się, ale emitowane z klienta nie jest odbierane? Spróbuj wstawić kilka "socket.emit/on (" test ")' (z odpowiednimi komunikatami logowania do konsoli) na serwerze i kliencie, które uruchamiają się bez interakcji, aby sprawdzić, czy komunikacja odbywa się przynajmniej przy pierwszym kontakcie, czy też problemy zaczynają się później. – laggingreflex

+0

@laggingreflex: Użyłem breakpointów, aby zobaczyć, że kod przechodzi do 'socket.emit'. Próbowałem z bardzo prostym kodem, aby sprawdzić, czy pierwszy kontakt się dzieje, i widzę, że wiadomości nie docierają do serwera. –

Odpowiedz

0

Niektóre żądania sieciowych sieci komórkowych na porcie 80, które mogą uszkodzić gniazda sieciowe. Nie wyjaśniłoby to, dlaczego działałoby to w innych przeglądarkach lub w trybie incognito, ale możesz przetestować tę hipotezę, przenosząc swój serwer i klienta, aby połączyć się z innym portem, np. 81.

Powiązane problemy