标签: aerogear

在PhantomJS上的WebTockets上的MQTT"AMQJS0008I Socket已关闭"连接错误

JBoss的AeroGear JavaScript的通知是针对不同的信息服务和协议交互提供了统一的/类似的API适配器的集合.

问题

我正在通过WS适配器JBoss AeroGear JS MQTT编写一些QUnit测试,这依赖于Eclipse Paho MQTT JavaScript客户端.测试适用于Firefox/Chrome但在PhantomJS 1.9.7上出现AMQJS0008I Socket closed连接错误.

最初,我的测试是针对Apache Active MQ代理版本5.9.0运行的,它支持开箱即用的WebTockets上的MQTT.我还修改了它们以在WebSockets沙箱环境中使用Eclipse Paho MQTT,ws://iot.eclipse.org/ws但问题仍然存在.

如何重现?

克隆我的GitHub存储库https://github.com/tolis-e/aerogear-js-integration.签出stackoverflow分支,执行npm install然后grunt integration-iot --debug.要验证测试是否适用于Firefox/Chrome,请tests/notifier/mqttws.html在浏览器中打开.QUnit测试位于mqttws.js文件中.正如您在下面的日志中看到的,我收到了一个AMQJS0008I Socket closed错误.

有关错误原因的任何想法?我的感觉是这个问题与PhantomJS 1.9.7不支持Web套接字RFC 6455这一事实有关.看起来PhantomJS 2.x支持RFC 6455

日志

[D] ["phantomjs","qunit.begin"]
[D] ["phantomjs","onLoadFinished","success"]
[D] ["phantomjs","qunit.moduleStart","Connect / Disconnect"]
[D] ["phantomjs","qunit.testStart","Connect to and Disconnect from MQTT Server"]
[D] ["phantomjs","console","Unexpected response code: 404"]
Unexpected response code: 404 …
Run Code Online (Sandbox Code Playgroud)

javascript mqtt phantomjs paho aerogear

9
推荐指数
0
解决办法
3299
查看次数

从aerogear统一推送服务器取消注册android客户端

我在处理注册时遇到问题 - 取消注册我的活动/服务或我在aerogear安装中使用的任何内容.

如果我从服务onCreate()注册并在onDestroy()中取消注册,当我卸载应用程序时,设备会在服务器端注册...如果我再次安装应用程序,它会再次注册设备,你可以重复这个直到你累了 当然,发送推送到用户给出的别名,每次注册时消息将到达一次.

此外,每次应用程序注册到aerogear时,deviceToken都是不同的,这意味着它更多地与每个安装的生成哈希相比,而不是该对的唯一标识符(app,device).

那么,现在的问题是,如何处理整个周期?我的意思是,每日运行和关于用户是否决定卸载应用程序的问题,它会被杀死而无法取消注册,一个月后决定他非常喜欢它,最终重新安装该东西.谢谢.

更新

当我测试我的应用程序时,问题就会增加.如果我在同一设备中使用两个不同的用户进行登录,那么我会得到两个用户消息,而且我必须更多地改变客户端实现.

使用aerogear数据库数据进行更新

这是两个设备的安装日志,有三个重新安装:


id  alias   deviceToken deviceType  enabled operatingSystem osVersion   platform    variantID
0dd99505-bba9-45e9-bfbf-38621bd41c3d    568b347a5df69915000pig@gmail.com    APA91bG9XSPpwbFenw0UETFLRxr2XoFw-HlH5yZpPgoCIVZLnv0QSqCx5iKqqhJ-tWF5CRISbydv6ItWZKxklD8OPtfxvuq1ekQEI3XkbFajsmGIJ3yjUIC0MGw3v2ITVd6byVtZLsI9uTfiDXyeNrXTxprzVxr9ng  ANDROID 1   android 4.4.4   android 4ae83272-5db7-41f6-879d-c907a39bd3fc
0ee3619f-0eb4-4139-b1fa-fe3403eb380c    1c24c6e05b58738f000edu@gmail.com    APA91bFrNknt7d57dFR5DagE4Nf1bCVyB93Jl1xU5_qELwYn5JmjYUpXrLE10yC6beZdUgae0ZgtKXgLI4LI-E_ROAFEI4xi-ZPhuE8UZB6K05L_mIWSk7kt32D7S9G2clw3WG51zvcQmaeg8xsG_VW-rnwfKZQVcg  ANDROID 1   android 4.4.4   android 4ae83272-5db7-41f6-879d-c907a39bd3fc
107d4dac-fbcf-4f82-9135-702b83d06f7f    568b347a5df69915000pig@gmail.com    APA91bEaN4AMJPZgML931rO4AdrMudfTmGVmYPqqARVLX1RxIfyYB46fGxlSK0w7g3qnU2d_cVOBi907TFIMoxBaOe3bvKI8DqsacrXMmT-DjhFoFRS2z4QCec9u0aRPm-EB9UwhfMrE3RrctdxDdNCQ0douuppYVQ  ANDROID 1   android 4.4.4   android 4ae83272-5db7-41f6-879d-c907a39bd3fc
161474b6-067d-4b54-a750-e21a9896814e    1c24c6e05b58738f000edu@gmail.com    APA91bGFE6cxLcxPDoRmv-HEIpA2jQndccrCryuR3q5BN4PG3EyHxISFoMCIwaPPXX8BIinrJOvNCbwpIrVOKw_mSv5TcLZnSgonR1grpiRkJ0mmwbFCme2CrwoMpkLkVUP7ZjwnYsr0HR3MKzmJLakrnlN-eMKr-g  ANDROID 1   android 4.4.4   android 4ae83272-5db7-41f6-879d-c907a39bd3fc
a5cddabe-1c00-4369-b4cc-f6c5da8f8740    568b347a5df69915000pig@gmail.com    APA91bGmFT7NCpfb1q4WHFK2wmQCQdMtW9ulQLiZYwrt9oyU4mqv9gCBN959pCw_wKy2zHw-JBU0p5SCzdpKN5l8i7uqPWk24ORHKE1Vf6rRUINkIRJheKVT6V6Wk38WQ7Rw1AgrqYXZN7WUImVSgd5cqq_p8lLISg  ANDROID 1   android 4.4.4   android 4ae83272-5db7-41f6-879d-c907a39bd3fc
f7514716-68d9-4d00-837a-f1f9da503151    1c24c6e05b58738f000edu@gmail.com    APA91bHTFJE7-nz_KB4aa2RUcEnFTVB0IzQZ-ZffPTujLWgi60xTMUeAet6YoUZJnXKnhBOSdAPgoaLDW18PWnwKXtc2MXxKjMYQQENNDdOxKQIV4fnMrAFWfwD_VT6x5XOJUWdQovGUwXiMX9SshCDvZJ4QnM1x_w  ANDROID 1   android 4.4.4   android 4ae83272-5db7-41f6-879d-c907a39bd3fc
Run Code Online (Sandbox Code Playgroud)

service android install push aerogear

6
推荐指数
1
解决办法
454
查看次数

如何在 Android 客户端中使用 Keycloak OpenId 进行 oAuth

我想使用 aerogear 和使用 Keycloak 的服务器在 Android 应用程序中对用户进行身份验证(使用他的用户名和密码)。我一直无法做到,请帮助我。

我目前可以在没有 aerogear 的情况下对用户进行身份验证,但我想使用这个库,因为它可以帮助我在需要时刷新令牌。我像这样对向服务器发出 POST 调用的用户进行身份验证(但来自 android):

 curl -X POST http://127.0.0.1:8080/auth/realms/example/protocol/openid-connect/token  
 -H "Content-Type: application/x-www-form-urlencoded" -d "username=auser" -d 'password=apassword' -d 'grant_type=password' 
 -d 'client_id=clientId' -d 'client_secret=secret'
Run Code Online (Sandbox Code Playgroud)

所以我得到的信息是:

  • 认证网址, ie http://127.0.0.1:8080/auth/realms/example/protocol/openid-connect/token
  • 用户名,用户的用户名
  • 密码,用户的密码
  • Keycloak服务器的client_id和client_secret

我对 Aerogear 的尝试是这样的:

private void authz() {
    try {

        AuthzModule authzModule = AuthorizationManager.config("KeyCloakAuthz", OAuth2AuthorizationConfiguration.class)
                .setBaseURL(new URL("http://127.0.0.1:8080/"))
                .setAuthzEndpoint("/realms/example/protocol/openid-connect/auth")
                .setAccessTokenEndpoint("/realms/example/protocol/openid-connect/token")
                .setAccountId("keycloak-token")
                .setClientId("clientId")
                .setClientSecret("secret")
                .setRedirectURL("http://oauth2callback")
                .setScopes(Arrays.asList("openid"))
                .addAdditionalAuthorizationParam((Pair.create("grant_type", "password")))
                .addAdditionalAuthorizationParam((Pair.create("username", "aUserName")))
                .addAdditionalAuthorizationParam((Pair.create("password", "aPassword")))
                .asModule();


        authzModule.requestAccess(this, new Callback<String>() {
            @Override
            public void onSuccess(String o) {
                Log.d("TOKEN ", o); …
Run Code Online (Sandbox Code Playgroud)

android aerogear keycloak

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

aerogear ×3

android ×2

install ×1

javascript ×1

keycloak ×1

mqtt ×1

paho ×1

phantomjs ×1

push ×1

service ×1