Ho un'applicazione che utilizza socket.io e socket.emit()
non funziona da Chrome mobile (su Android e iOS). Vedo che il socket.emit()
viene eseguito nel browser. Ma le mie istruzioni console.log sul lato server in socket.on()
non sono in esecuzione, quindi penso che i messaggi non arrivino. Neanche io vedo errori nella console.socket.emit non funziona in chrome mobile (ma funziona in modalità in incognito)
È interessante notare che tutto funziona correttamente in modalità di navigazione in incognito, oltre a tutte le modalità di altri browser mobili come Safari.
Qualsiasi soluzione o aiuto nel debug sarebbe utile.
EDIT:
CODICE CLIENTE LATO
$(document).ready(function(){
socket = io();
$(".check").on("submit", function(event){
event.preventDefault();
ga('send','event','evt','evt123');
socket.emit('checkRoom', { rId: "12345", pId: "johndoe"});
});
});
CODICE 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:
ho specificato manualmente il file socket.io-1.3.5.js
sul lato client (invece di utilizzare il valore predefinito /socket.io/socket.io.js
) e avviato vedere ing questo errore nella console:
WebSocket connection to 'ws://mydomain.com/socket.io/?EIO=3&transport=websocket&sid=wr8UpsT45lrWHtpMACJs' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
Probabilmente avremo bisogno di vedere il codice rilevante per noi per avere un'idea di cosa potrebbe succedere qui. – jfriend00
Come vedi esattamente che 'socket.emit' sta funzionando dal client? Hai messo un 'console.log' prima o dopo? Stai ancora ricevendo "un utente connesso" sul server che significa che il socket si connette ma che emette dal client non viene ricevuto? Prova a inserire un paio di 'socket.emit/on ('test')' (con i messaggi di log della console appropriati) sia sul server che sul client che si attivano senza alcuna interazione solo per vedere se la comunicazione avviene almeno al primo contatto o se il i problemi iniziano più tardi. – laggingreflex
@laggingreflex: ho usato i breakpoint per vedere che il codice sta per 'socket.emit'. Ho provato con un codice molto semplice per verificare se il primo contatto sta accadendo, e posso vedere che i messaggi non arrivano sul server. –