客户端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}
- 一次收到多个消息协议 格式
[{},{},{}]
[{"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。