【问题标题】:Websockets with cordova doesn't work on ipad带有cordova的Websockets在ipad上不起作用
【发布时间】:2018-06-02 20:37:04
【问题描述】:

我正在尝试使用 Cordova 在 JS 中实现 WebSockets。我不使用任何插件,我使用 JS 的本机 WebSockets 来执行此操作。基本上,我的应用程序连接到后端,发送消息然后等待响应。这在 Chrome / Firefox 上运行良好,但是当我在 iPad 上安装它时,前端 WebSockets 永远不会连接到后端。

所以我尝试在我的元标记中添加一些内容策略:

<meta http-equiv="Content-Security-Policy" content="default-src * gap: file: ws: wss: ; style-src 'self' 'unsafe-inline'; img-src 'self' data: ; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src 'self' ws: ;">

websocket 是这样创建和使用的:

ws = new WebSocket('ws://backEndIP:port/')
ws.send('/skeleton/last')
  ws.onmessage = function (event) {
    resolve(event.data);
  }

我不知道我会错过什么。

编辑

我在 config.xml 中添加了<access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' /> ,但它仍然不起作用。

【问题讨论】:

  • 也许禁用防火墙?你确定使用的端口是开放的吗?尝试 ping 您的服务器以测试您的设备是否可以连接到它
  • 我的服务器工作正常,因为当我在互联网浏览器中预览应用程序时,websockets 工作正常。所以我很确定该端口也已打开。 iPad 上没有防火墙(我刚刚检查过)
  • 我在 ws: 之后添加了后端的 ip,所以我的元标记现在看起来像这样:&lt;meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval' connect-src 'self' ws://192.168.8.1:9988/ ;"&gt; 我也尝试了几个插件,但这仍然不起作用......我知道自从我测试它以来,websockets 在 Safari 上运行良好。我真的迷路了

标签: javascript ios cordova ipad websocket


【解决方案1】:

我认为您必须在 config.xml 中将 backEndIP 添加到您的科尔多瓦白名单中。

在此处查看文档:https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/

【讨论】:

  • 你能不能从 iPad 浏览到服务器,或者在服务器上放一个测试网页,看看你是否可以从设备访问它,以验证 iPad 是否真的可以看到网络上的设备
猜你喜欢
  • 2011-12-26
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
相关资源
最近更新 更多