【问题标题】:React native: Stomp websocket not working in androidReact native:Stomp websocket 在android中不起作用
【发布时间】:2017-12-01 17:15:34
【问题描述】:

我尝试使用https://github.com/jmesnil/stomp-websockethttps://github.com/JSteunou/webstomp-client

我的服务器使用 Spring-boot

我的代码:

var Stomp = require('stompjs/lib/stomp.js').Stomp;
let client = Stomp.client(url);
client.connect({}, function connectCallback(frame){
   console.log('OK')
}, (error) => {
   console.log('Error');
});

两者都使用 IOS,但在 android 中无法连接服务器。

Web Socket 已打开...

连接

接受版本:1.1,1.0

心跳:10000,10000

哎呀!失去联系

错误

【问题讨论】:

  • Stomp 包装所有添加 Byte.NULL ('\x00') 作为最后一个符号的消息。如果它是 Byte.NULL (似乎是一个错误),WebSocket 的 Android 实现会删除最后一个字符。然而 WebSocket.send 可以接受一个字节数组作为参数,所以基本上你需要做的就是用一个字节数组替换你传递给这个方法的字符串,然后一切都可以在两个平台上正常工作。
  • 这里有一个解决方法github.com/stomp-js/stompjs/issues/55

标签: android reactjs stomp-websocket


【解决方案1】:

正如Max 所提到的 - 问题是 android 没有发送 \x00。

请在此处查看解决方案https://stackoverflow.com/a/48623125/1869260

【讨论】:

    【解决方案2】:

    虽然这是一个老问题,但最近几天让我很困扰......

    我已经关注了Viktor's 解决方案(在我所做的研究中也提到了许多其他来源)关于 Android 实现的 WebSocket 会削减最后一个字符(如果它是 Byte.NULL 并在我的服务器中添加一个包装器)大多数解决方案建议的额外字符......但它仍然没有工作......

    最后,我的 Android (9+) 版本存在问题,如 here 所述,不允许明文通信(即无 SSL)

    有一次,我在我的开发服务器上添加了一个自签名证书,它可以正常工作

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      相关资源
      最近更新 更多