当前位置: 首页 > 知识库问答 >
问题:

插座ioAndroid套接字。在用户杀死应用程序后不工作

谷彦君
2023-03-14

我有插座。在onCreate中,它一开始工作得很好。但是,当我关闭应用程序时,重新打开应用程序,服务器会收到来自其他人的消息,但android套接字除外。这是不起作用的。但发射功能仍然有效。你有什么建议吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        mSocket = IO.socket("http://192.0.0.1/");
        mSocket.connect();
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }

    mSocket.on("chat message", onNewMessage);  // not working after kill the app and reopen.

}

private Emitter.Listener onNewMessage = new Emitter.Listener() {
    @Override
    public void call(final Object... args) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                JSONObject data = (JSONObject) args[0];
                String message;
                try {
                    message = data.getString("message");
                    Log.d("message", message );
                } catch (JSONException e) {
                    return;
                }
        });
    }
};
@Override
    public void onDestroy() {
        super.onDestroy();

        mSocket.disconnect();
        mSocket.off("chat message", onNewMessage);
}

Android客户端套接字。io版本是套接字。io客户端:0.7。0.服务器是节点。js和“socket.io”:“^1.4.5”。

共有1个答案

廖君昊
2023-03-14

我解决了这个问题。当我们关闭应用程序并重新启动时,socket将立即关闭socket并创建一个新的应用程序。因此,我们必须向服务器发送一个新事件以加入原始文件室。现在它工作正常了。

 类似资料:
  • 我正试图通过后台获取从url获取数据。My func尝试获取数据,如果有新数据,它会发送本地通知。当我最小化应用程序时,背景提取在大约10-20分钟后工作。但当我关闭应用程序(双击home按钮并关闭应用程序)时,它就不起作用了。我等了大约一个小时,但没有成功。我正在Android系统中使用后台服务,它正在成功运行。当应用程序关闭时,有没有办法从url获取数据并发送本地通知?我使用的是Xcode 6

  • 我正在尝试构建一个实时聊天应用程序。 我已经整合了https://pub.dev/packages/flutter_local_notifications用于推送通知的软件包,这是有效的。 我没有使用Firebase,我正在使用我自己的自定义后端,使用https://socket.io/进行实时聊天。 我想在用户发送聊天信息时接收推送通知。推送通知在应用程序处于前台或后台时起作用。但是,当我从进程

  • 日志: ... 我的项目中只有三个文件:

  • 问题内容: 我有一个Python应用程序,该应用程序打开一个简单的TCP套接字以与单独主机上的另一个Python应用程序进行通信。有时程序会出错,或者我将直接杀死它,并且无论哪种情况,套接字都可能在未知的时间内保持打开状态。 下次我运行程序时,出现此错误: 现在,程序始终尝试使用相同的端口,因此看起来好像它仍处于打开状态。我检查了一下,很确定程序没有在后台运行,但是我的地址仍在使用中。 因此,如何

  • 我有一个要求,执行一个任务,在正好每5分钟。我考虑了多个选项,并尝试使用类来触发任务来实现这一点。但是,当应用程序被杀死时,我无法触发警报。 当应用程序打开或在后台运行时,警报似乎工作得完美无缺,但一旦我退出应用程序,它似乎完全停止了。 我的实现是使用函数,并自己处理重复这个过程。最初的警报在5秒后触发,然后在此之后每5分钟触发一次。 MyService.kt:

  • 问题内容: 我正在研究并尝试制作一个简单的应用程序。这是代码: 编辑: 我的错,抱歉,但主要问题仍然存在。这是更正的代码: 但是,当我尝试启动它时,出现以下错误: 这可能是什么原因? UPD: 这是其余的痕迹: 问题答案: 这可能是什么原因? 的原因是您尚未向程序传递任何参数。因此,不会引用有效的数组索引(顺便说一句:我将创建一个单独的局部变量,而不是分配给该数组。从技术上讲,这是可能的,但我不会

  • 问题内容: 在被杀死一次之后,Selenium服务器就挂在所有其他启动上,甚至没有尝试获取服务器端口。 重新启动可解决此问题。以不同的用户身份运行也会使selenium再次启动,但是在 该 进程终止后 , 它将不再起作用。 这是在VirtualBox VM中的Linux 2.6.32-5-amd64(debian压缩)上。查看系统调用的日志,无论何时工作,什么时候不工作,某些组件似乎在套接字绑定之