You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用STOMP实现浏览器向安卓传数据时真机IP配置导致崩溃问题求助

排查方向与解决方案

1. 优先检查最易触发崩溃的配置问题

  • 连接地址缺失端口:你修改后的连接地址仅写了笔记本IP,遗漏了服务端运行的8080端口,正确写法应为ws://[你的笔记本局域网IP]:8080/im/websocket,端口缺失会直接导致连接失败触发崩溃。
  • 安卓高版本明文流量限制:Android 9(API 28)及以上系统默认禁止http/ws这类未加密的明文流量,你需要在AndroidManifest.xml的<application>标签中添加属性android:usesCleartextTraffic="true"放开限制,本地测试环境可直接使用该配置。
  • 缺少必要权限:确认AndroidManifest.xml中已添加网络相关权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. 网络连通性验证

  • 关闭笔记本系统防火墙后再测试,或手动添加8080端口的入站访问规则,避免防火墙拦截手机端的连接请求。
  • 先使用手机自带浏览器访问http://[你的笔记本局域网IP]:8080,确认能正常打开服务端页面后再测试STOMP连接,排除网络层连通问题。

3. 代码异常捕获补全

你当前代码多处缺少异常捕获逻辑,极容易因连接失败、数据格式异常触发崩溃:

  • 订阅消息时补全错误处理:
stompClient.topic(Const.broadcastResponse)
    .subscribe(
        stompMessage -> {
            // 原有接收逻辑
        },
        throwable -> {
            Log.e(Const.TAG, "订阅失败", throwable);
        }
    );
  • JSON解析逻辑外层统一包裹try-catch,你当前代码中new JSONObject(stompMessage.getPayload())未捕获异常,若服务端返回非JSON格式数据会直接崩溃。
  • 发送消息的subscribe()补全错误回调,避免发送失败触发未捕获异常。

4. 连接逻辑优化

  • 不要在stompClient.connect()执行后立即发起订阅,建议在StompUtils的OPENED事件回调中执行订阅操作,避免连接未建立成功就发起请求报错。
  • 在BroadcastActivity的onDestroy生命周期中添加stompClient.disconnect()逻辑,避免页面销毁后无效连接引发内存泄露、重复连接异常。

内容的提问来源于stack exchange,提问作者Joe Tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:39:01