使用cordova构建Windows应用程序的Websocket问题

时间:2017-05-04 18:04:44

标签: windows cordova angular

我的申请遇到了很大的麻烦。

我有一个应用角2.我用Cordova打包了这个应用程序。然后使用visual studio,我构建了一个Windows应用程序。

在我的应用程序中,我使用WebSocket,我的应用程序使用WebSockets将消息发送到本地服务器WS。该服务器通过Windows服务在本地运行。

我的问题是我无法将我的应用程序与WS服务器连接。在错误事件中,我什么都没有。

如果我在我的计算机上构建我的应用程序并将其安装在同一台计算机上,它可以正常工作,但如果我在另一台计算机或平板电脑上安装此应用程序则无效。

所有设备都在Windows 10上。

以下是我的cordova项目中的config.xml

<?xml version="1.0" encoding="utf-8"?>
<widget defaultlocale="fr-FR" id="toto" version="1.0.0" windows-packageVersion="1.0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps">
  <content src="index.html" />
  <access origin="*" />
  <vs:features />
  <preference name="SplashScreen" value="screen" />
  <preference name="windows-target-version" value="10.0" />
  <preference name="windows-phone-target-version" value="10.0" />
  <preference name="WindowsDefaultUriPrefix" value="ms-appx://" />
  <plugin name="cordova-plugin-whitelist" version="1" />
  <allow-intent href="http://*/*" />
  <allow-intent href="https://*/*" />
  <allow-intent href="tel:*" />
  <allow-intent href="sms:*" />
  <allow-intent href="mailto:*" />
  <allow-intent href="geo:*" />

  <platform name="wp8">
    <splash height="1280" src="res/screens/wp8/SplashScreenImage.png" width="768" />
  </platform>
  <plugin name="cordova-windows-capability-localnetwork" src="https://github.com/dilhan2013/cordova-windows-capability-localnetwork.git" version="0.1.0" />
  <vs:platformSpecificValues>
    <vs:platformSpecificWidget platformName="windows">
    </vs:platformSpecificWidget>
  </vs:platformSpecificValues>
  <preference name="DisallowOverscroll" value="true" />
  <preference name="KeyboardDisplayRequiresUserAction" value="false" />
  <plugin name="cordova-plugin-console" version="1.0.7" />
</widget>

感谢您的帮助。 提前抱歉我的英文

2 个答案:

答案 0 :(得分:1)

这种特殊情况下的问题来自应用程序试图访问在localhost上运行的Web Socket。

就像这篇帖子的回答一样:Cannot connect to localhost in windows store application,出于安全原因,开发的Windows应用商店可以与环回隔离。

解决方案首先在于找到已安装的应用程序PackageFamilyName(这也可以通过regedit中的SID完成,就像上面提到的帖子一样)。为此,请运行此Power Shell命令:

Get-AppxPackage | ? {$ _。名字式' APP_NAME '}

APP_NAME可以是您认识的应用名称的一部分。

显示包的描述后,通过在以下Power Shell命令中输入PackageFamilyName将应用程序添加到NetIsolation免除列表:

CheckNetIsolation LoopbackExempt -a -n =“PackageFamilyName”

应用程序现在应该是显示的免除列表的一部分:

CheckNetIsolation LoopbackExempt -s

应该允许它访问localhost。

答案 1 :(得分:0)

检查您的WS服务器,是否接受来自localhost以外的主机的传入请求?