pomelo-cn
pomelo-cn copied to clipboard
在lordofpomelo例子中的pushByChannel的问题
在lordofpomelo例子中,每当pushByChannel的时候,客户端会收到两个package,一个id:1,type:3,另一个id:3,type:2
1.问下id3,type:2这个是有什么用,为什么要发两个包? 2.pushByChannel的返回值res,返回的是什么?
不大清楚你说的package的含义,如果在协议package这一层是没有id的概念的,而服务端到客户端的push是不会有id的。 关于传输协议可以看下这里: https://github.com/NetEase/pomelo/wiki/Pomelo-%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AE
分两层进行封装,package层相当于传输层,负责一个消息包的完整传输,message层相当于应用层,负责消息的封装和压缩。
id是消息的id,type是消息的类型,type为2表示是服务器返回的response消息,3表示是服务器推送的消息,可以参考这里。
我在本地观察,发送一个聊天消息只会返回一个type为2的response消息,用来确认聊天消息的发送结果。
从你提供的id信息来看,似乎是连续发了两个request,然后收到了两个response,具体是什么request/response,还得将具体包的内容贴上来才能看出来。
pushByChannel
没有res返回。这里主要是兼容pushByPlayerName
的接口风格。res表示发送消息的结果,成功为OK,也有可能接收消息的玩家不在线,则返回其他的状态码。