繁体   English   中英

socket.emit无法在移动设备上运行(但它可以在隐身模式下运行)

[英]socket.emit is not working in mobile chrome (but it works in incognito mode)

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

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

任何解决方案或帮助调试都会有所帮助。

编辑:

客户端代码

$(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

一些移动网络通过端口80代理请求,这可能会破坏Web套接字。 这无法解释为什么它可以在其他浏览器中或隐身,但您可以通过移动您的服务器和客户端通过不同的端口连接来测试这个假设,例如。 81。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM