• 嘿嘿……想用其他类库的,可以在后端加,前端只需要加一条协议,来表明这次请求需要哪种类库不就可以了😇

  • dubbo 的 telnet 服务,我粗略看了一下

    • 很复杂的参数调用我一直没有调试成功
    • 找方法参数的时候,telnet 只能给到java.util.List,而我需要给到Ljava/util/List<Ljava/lang/String;>;

    其他的没仔细研究,可能我研究的不深,所以就没有用自带的 telnet

  • 其实 Dubbo 服务的本质还是在服务器上监听了一个端口,然后你按照你 hessian 协议把数据打包好后,就往这个端口发送过去就可以了
    这么来考虑的话,你只需要在后台启动一个 sock 链接,连接到 Dubbo 那个服务器,这是连接的部分
    下面我来贴一个数据打包的结构吧,这是整个包的数据结构,分先后,具体的 hessian 是怎么打包的,建议看看 hessian 的官方文档:http://hessian.caucho.com/doc/hessian-ws.html

    [
      {
        "HEADER": {
          "struct": "12ds",
          "value": "dabbc2000000000000000000",
          "desc": "不足12位后面补0"
        }
      },
      {
        "dataLength": {
          "struct": "uint32",
          "value": "",
          "desc": "数据长度"
        }
      },
      {
        "DOUBLE_VERSION": {
          "struct": "根据hessian协议序列化",
          "value": "2.5.3",
          "desc": ""
        }
      },
      {
        "interface": {
          "struct": "根据hessian协议序列化",
          "value": "com.test.account.service",
          "desc": "接口名称"
        }
      },
      {
        "interfaceVersion": {
          "struct": "根据hessian协议序列化",
          "value": "2.0",
          "desc": "Dubbo服务的版本号,就是在被测服务xml里面写的那个"
        }
      },
      {
        "methodName": {
          "struct": "根据hessian协议序列化",
          "value": "getScoreMemberInviteInfo",
          "desc": "函数名"
        }
      },
      {
        "paramType": {
          "struct": "根据hessian协议序列化",
          "value": "Ljava/lang/String;",
          "desc": "参数类型"
        }
      },
      {
        "param": {
          "struct": "根据hessian协议序列化",
          "value": "sss",
          "desc": "参数值"
        }
      },
      {
        "attachments": {
          "struct": "根据hessian协议序列化",
          "value": {
            "customer": "python-dubbo-test",
            "owner": "tbj-test",
            "timeout": 5
          },
          "desc": ""
        }
      }
    ]
    
  • 也不算大佬,你只要把我上面贴的 github 连接,然后反着考虑,你也能弄出来;
    当初的想法是,让不会写代码的人也可以测试 Dubbo 接口