Skip to content

客户端HTTP切换强联网

客户端HTTP切换强联网

1. 通过HTTP协议请求websocket URL

注意:
发送消息时,"do" : "Pmd.WebSocketForwardUserPmd_S",中有Pmd.字段。服务器对应的消息处理在gxlua->unilight.lua最后一个函数Net.PmdWebSocketForwardUserPmd_S. Send:

ToUrl: http://***.***.***.***:7001/shen/user/http?smd=md5&sign=c15bfc76c95becb4530a5341b2492924

{
    "do" : "Pmd.WebSocketForwardUserPmd_C",
    "data" : {
        "accountid" : 1000103
    },
    "uid" : "1000103",
    "gameid" : 170,
    "zoneid" : 301
}

Recv:

{
    "errno" : "0",
    "st" : 1441166130,
    "do" : "Pmd.WebSocketForwardUserPmd_S",
    "data" : {
        "zoneid" : 301,
        "tokenid" : 1441166130384,
        "gatewayurl" : "ws:\/\/***.***.***.***:7001\/shen\/user",
        "errno" : "0",
        "accountid" : 1000103,
        "gameid" : 170,
        "logintempid" : 0
    }
}

2. 建立websocket,然后进行第一条消息校验

{
    "gameid" : 170,
    "zoneid" : 301,
    "accountid" : 1000103,
    "logintempid" : 0,
    "timestamp" : 1441166088,
    "tokenmd5" : "f8009678ffc2a9aefec974ad01e1cc09",
    "cmd_name" : "Pmd.UserLoginTokenLoginUserPmd_C"
}

Recv:

  • 成功: {"cmd_name":"Pmd.UserLoginReturnOkLoginUserPmd_S"}
  • 失败: {"cmd_name":"Pmd. OnUserLoginReturnFailLoginUserPmd_S"}

3. 通讯样例

{
    "cmd_name" : "Pmd.UserJsMessageForwardUserPmd_CS",
    "msg" : "{\"do\":\"Cmd.BetBegin_Brd\",\"data\":{\"multipleIdx\":1,\"betTime\":30}}"
}

4. 强联网接收消息格式

强联网客户端接收消息种类:
1. 一次收到一个消息协议,目前以json 的string方式发过来,格式:{ }如:

{"cmd_name":"Pmd.TickRequestNullUserPmd_CS","requesttime":1441606203} {"cmd_name":"Pmd.TickRequestNullUserPmd_CS","requesttime":1441606203}
  1. 一次收到多个消息协议 格式[{},{},{}]
[{"cmd_name":"Pmd.UserJsMessageForwardUserPmd_CS","msg":"{\"do\":\"Cmd.BetAllInfo_Brd\",\"data\":{\"betinfo\":[{\"id\":1,\"chips\":300},{\"id\":2,\"chips\":120300},{\"id\":3,\"chips\":10200},{\"id\":4,\"chips\":30200},{\"id\":5,\"chips\":50200},{\"id\":6,\"chips\":100300},{\"id\":7,\"chips\":10200},{\"id\":8,\"chips\":90100},{\"id\":9,\"chips\":130100},{\"id\":10,\"chips\":10400},{\"id\":11,\"chips\":140300},{\"id\":12,\"chips\":130200}]}}"},{"cmd_name":"Pmd.UserJsMessageForwardUserPmd_CS","msg":"{\"do\":\"Cmd.Lottery_Brd\",\"data\":{\"lotteryInfo\":[{\"id\":8,\"type\":2,\"multiple\":3,\"seatIdx\":16}]}}"}]

5. 对接经验总结

初次对接时,因为有登陆服URL和网关URL,会出来本应发给平台登陆服URL的协议发给了网关URL,会报脚本错误;反之,当本应发给网关URL的协议发给了平台登陆服URL,会出来超时,原因是平台服务器收到了非期待的协议认为是非法协议攻击,直接丢弃不做任何处理。

对于此问题,
1. 建议协议发送时(切换账号,重新登陆时),建议分清网关还是登陆服。
2. 在HTTP send接口中,直接写好,如果是登陆服的几个协议就用平台登陆服的URL发送,否则就发给网关URL来转发给unilight。