socket.emit在手机浏览器中无法正常工作(但在隐身模式下工作)

我有一个应用程序使用socket.io,并且socket.emit()不能从移动铬(Android和iOS)上工作。 我可以看到, socket.emit()正在浏览器中执行。 但是我在socket.on()中的服务器端console.log语句没有运行,所以我认为消息没有到达那里。 我在控制台中也看不到任何错误。

有趣的是,一切工作正常,在隐身模式,加上其他移动浏览器,如Safari的所有模式。

任何解决scheme,或帮助debugging将是有益的。

编辑:

客户端代码

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

服务器端代码

 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:

我手动在客户端指定了socket.io-1.3.5.js文件(而不是使用默认的/socket.io/socket.io.js )并开始在控制台中看到这个错误:

 WebSocket connection to 'ws://mydomain.com/socket.io/?EIO=3&transport=websocket&sid=wr8UpsT45lrWHtpMACJs' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT 

一些移动networking通过端口80代理请求,这可能会破坏networking套接字。 这并不能解释为什么它可以在其他浏览器或隐身模式下工作,但是你可以通过移动你的服务器和客户端来连接不同的端口来testing这个假设。 81。

Interesting Posts