收藏
回答

websocket问题

问题模块
API和组件

nexus 6p手机 Android版本7.1.1,小米6手机Android版本7.1.1,iOS手机可以连接 websocket(wss://)。

乐视1s 版本6.0,魅蓝metal 版本5.1,红米4A 版本6.0 ,webSocket(wss://)无法连接,在开发环境中配置webSocket(ws://)可以连接。

最后一次编辑于  2017-06-16  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

11 个回答

  • Woody
    Woody
    2017-08-16

    已解决。

    原因是低版本的Android(看来是7以前)不支持SSL证书的SNI。有两个方案:1)单独申请一个证书,部署专有的独立服务器上;2)将现有的多个环境中,将默认的证书对应到wss://的域名。由于不清楚安卓的具体机制,我是这么干的:a)将服务器IP指定到wss的vhost中,即nginx中的server_name;b)用

    openssl s_client -debug -connect 你的wss域名:443 命令,找到证书对应的自签名domain,把它也写入wss对应的server_name中去


    2017-08-16
    赞同 11
    回复 4
    • 胖大凯
      胖大凯
      2018-08-28

      多谢,已解决

      2018-08-28
      赞同
      回复
    • 睿睿的爸爸
      睿睿的爸爸
      2018-10-23回复胖大凯

      请问一下,怎么解决的呢

      2018-10-23
      赞同
      回复
    • 胖大凯
      胖大凯
      2018-10-23回复睿睿的爸爸

      我这边是服务器有多个证书 设置默认返回的证书的是websocket的那个

      2018-10-23
      赞同
      回复
    • 睿睿的爸爸
      睿睿的爸爸
      2018-10-25回复胖大凯

      谢谢,用你的这个方法可以解决问题。

      2018-10-25
      赞同
      回复
  • 白玉雄
    白玉雄
    2017-08-04

    我也碰到这个问题,安卓的不能连接,ios的可以。

    大神你是怎么解决的?用的什么技术方案?

    我用golang写的。

    2017-08-04
    赞同
    回复 1
    • 胖大凯
      胖大凯
      2018-10-23

      我这边是服务器有多个证书 设置默认返回的证书的是websocket的那个

      2018-10-23
      赞同
      回复
  • Woody
    Woody
    2017-08-16

    把小程序的放到首位是什么意思?

    2017-08-16
    赞同
    回复 1
    • 胖大凯
      胖大凯
      2018-10-23

      设置默认返回的证书的是websocket的那个

      2018-10-23
      赞同
      回复
  • jim
    jim
    2017-10-17

    @Woody 能不能具体说说您怎么配置的

    2017-10-17
    赞同
    回复 1
    • 胖大凯
      胖大凯
      2018-10-23

      我这边是服务器有多个证书 设置默认返回的证书的是websocket的那个

      2018-10-23
      赞同
      回复