Android autobahn websocket没有';断开

Android autobahn websocket没有';断开,android,autobahnws,Android,Autobahnws,我正在应用程序中使用websocket检查新消息。 在我的服务类中实现的Websocket,当我想要停止服务(在活动中使用stopService)时,它应该调用DisconnectWebSocket,但方法onClose没有调用 下面是一些代码: @Override public int onStartCommand(Intent intent, int flags, int startId) { start(); super.onStartCommand(intent,

我正在应用程序中使用websocket检查新消息。 在我的服务类中实现的Websocket,当我想要停止服务(在活动中使用stopService)时,它应该调用DisconnectWebSocket,但方法
onClose
没有调用

下面是一些代码:

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {

    start();

    super.onStartCommand(intent, flags, startId);

    return Service.START_STICKY;
}

@Override
public void onDestroy() {
    Log.i("tag", "onDestroy service start");

    Intent intent = new Intent(this, RepeatingAlarmService.class);

    if (alarmManager != null) {
        alarmManager.cancel(PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0));
    }

    mConnection.disconnect();  // this line doesn't work ???

    super.onDestroy();

    Log.i("tag", "service stopped");
}


private void start() {
    final String uri = "ws://ws.blabla.com"
    try {

        mConnection.connect(uri, new WebSocketConnectionHandler(){
            @Override
            public void onOpen() {
                Log.i("tag", "Socket open"); // this line work well

                super.onOpen();
            }

            @Override
            public void onClose(int code, String reason) {
                Log.i("tag", "Socket closed " + String.format("code: %d, reason: %s", code, reason));  // this line doesn't been printed
                }

                super.onClose(code, reason);
            }

            @Override
            public void onTextMessage(String payload) {              
                Log.i("tag", payload); // this line work well

                super.onTextMessage(payload);
            }
        });
    } catch(Exception ex) {

    }
}

答案是:只使用最新版本的外部库

在gradle构建文件中,我使用maven存储库“jitpack.io”

我在
dependencies
部分写了这一行
compile'com.github.tavendo:AutobahnAndroid:v0.5.2',告诉gradle他应该从jitpack存储库下载Dependency


Github上的最新版本是0.5.2,但如果您从Github(而不是从jitpack.io)下载它,您将看到不同之处。

最好将其报告给创建者,以便他能够修复它。。。他反应很快……我试了两种,但都没用。当我调用disconnect方法时,它不会触发onClose。@ayteq您现在使用的是什么版本?在哪里下载的?请给我一些code@YuriyKolbasinskiy我使用的是0.5.2,我从github下载的。以前我通过gradle使用jitpack。在这里找到你的帖子后,我尝试了0.5.2。我从github下载并作为模块导入,然后在gradle中编译。问题是,当我调用socket.disconnect()方法时,它从不从服务器断开连接,所以不会调用onClose。我已经通过服务器端黑客修复了这个错误。我创建了一个将用户与套接字服务器断开连接的事件。@ayteq您确定已从Gradle文件中的
依赖项中删除
编译'com.github.tavendo:AutobahnAndroid:v0.5.2'
?我想你还在用旧版本。请检查一下。您能在项目文件夹中找到
autobahn*.jar
文件吗?
repositories {
        maven {
            url "https://jitpack.io"
        }
    }