【问题标题】:socket.io does'nt work on chrome mobile, but it does in incognito modesocket.io 不能在 chrome 移动设备上运行,但它可以在隐身模式下运行
【发布时间】:2016-03-23 16:23:11
【问题描述】:

我在 AngularJS 下使用 nodeJs 和 socket.io。

套接字在桌面(所有浏览器)上运行良好。但不是在移动设备上。

嗯... Socket d'ont 在 chrome 移动设备上工作,期待在隐身模式下。 下面是一段代码:

服务器端:

io.on('connection', function(socket){
    user = {
        id: socket.id,
        socket: socket
    };
    console.log('connection received');
    console.log(user.id);
    socket.emit('files', lib.all());

客户端

socket.on('files', function(data){
    var streams = data;
    if(streams){
        $scope.streams = streams;  
    } 
});

lib.all() 函数工作正常。 而且我有一个角度工厂来处理 socket.io(也可以正常工作)。

在 chrome 移动套接字中没有接收或发出任何东西。但它们在隐身模式下按预期工作。 他们也可以在 Firefox for android 中工作。

我不是 Android 方面的专家,也不是 chrome 方面的专家。但我怀疑发生了一些特别/奇怪的事情。防火墙?代理?

有人知道解决方法吗?

谢谢,祝你有美好的一天!

P.S:在启用了仿真的 chrome 桌面上,它工作正常。

编辑: 我创立了到底是什么:

Chrome 移动“数据保护程序”选项。使用谷歌服务器减少数据的人。

套接字可能在通过 Google 服务器传递时遇到问题。但解决方法仍然很好。

【问题讨论】:

  • 我也有这个,只是它即使在隐身模式下也根本不加载。 ://

标签: android angularjs node.js sockets google-chrome


【解决方案1】:

您是否在任何 javascript 中使用完整性属性?

我的 bootstrap.js 的 CDN 存在 SHA-256 不匹配问题,导致内容被 Chrome 数据保护程序阻止。

我通过将 src="//my.cdn.js 更改为 src="https://my.cdn.js 来解决此问题

【讨论】:

  • 上述代码在我的项目中完全改变了,我切换了前端框架,整个代码已经从头开始重新完成......所以我无法回答你。但有可能是的,问题确实是因为混合了来源,以及错误的 socket.io 主机定义。无论如何希望它有所帮助:)
猜你喜欢
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多