ionic2 WebSocket 在 Android 应用程序中不起作用

Posted

技术标签:

【中文标题】ionic2 WebSocket 在 Android 应用程序中不起作用【英文标题】:ionic2 WebSocket is not working in Android App 【发布时间】:2016-12-14 20:02:32 【问题描述】:

试图让 WebSocket 在 ionic2 android 应用程序中工作。 在浏览器模式下工作正常

我安装了https://github.com/knowledgecode/WebSocket-for-Android 并按照所有说明进行操作: - 安装科尔多瓦插件白名单 - 设置内容安全策略 (CSP) - 设置 config.xml:

<access origin="*"/>
<allow-intent href="ws://*/*:*"/>
<allow-intent href="wss://*/*:*"/>

但是当我使用 ionic run android

进行测试时,没有连接到我的服务器
connect()
this.ws = new WebSocket("ws://192.168.178.170:8000");

this.ws.onopen = () => 
  console.log('open');
;

this.ws.onmessage = (event) => 
  console.log('new message: ' + event.data);
  this.messages.push(event.data);
;

this.ws.onerror = () => 
  console.log('error occurred!');
;

this.ws.onclose = (event) => 
  console.log('close code=' + event.code);
  this.connect();
;

我错过了什么吗?

【问题讨论】:

Websocket not working on my Android app (with Phonegap Build)的可能重复 【参考方案1】:

我从未使用过 Ionic 2,但至少在 Corova 中,默认情况下在 html 页面中启用了 CSP 元标记。如果在您的 html 页面中设置了标签,则需要在其上附加指令以允许 WebSocket 访问。

例如:

<head>
  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src ws://192.168.178.170:8000">

注意以上结尾。

【讨论】:

以上是关于ionic2 WebSocket 在 Android 应用程序中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

怎么创建一个serversocket

每次使用 backgroundGeolocation 和 IONIC 保存坐标

Ionic2 如何在页面中使用 JQuery 插件

模块没有导出成员'IonicNativePlugin',Ionic2 for facebook

Ionic2使用第三方cordova插件(非Ionic2官方支持的native cordova插件)

Ionic2 错误:“没有存储提供程序”