WebQQ协议分析(8)——聊天(1)

基本信息已经获取完成,下面就可以聊天了。有必要说明一下,由于WebQQ是基础HTTP协议的,所以服务器有了新信息需要客户端更新时不会主动给客户端发送信息,需要客户端定时去服务器查询。

WebQQ的定时查询命令是00,格式如下:

1030196367;00;消息编号;4b2b432f;

WebQQ是每隔大约1秒向服务器发送一次消息的。

1、得到群聊天内容

服务器返回的命令:17 

格式如下:

1030196367;17;28656;XXXXXX;54028;2b;0b;聊天内容;0c40808010新宋体;1;86540289;XXXXXX;128783;374;1281709924;3305670154;

第二个值为命令号17;第三个值可以理解为聊天内容编号;第四个为群ID号,注意不是群号;第五个也是聊天内容编号;第六个为子命令号,2b表示群消息;第七未知;第八个为聊天内容,聊天内容有些复杂,比如图片和QQ表情是不同的,现在只处理最简单的文本;第九个为字体,前两个字符“0c”组成一个字节的十六进制数,该字节的第一位为下划线位,第二位斜体位,第三位为加粗位,后五位为字体大小位,“408080”为文本颜色,“10”无意义,再往后就是字体了;第十二个为发言人的QQ号;第十五个为发言时间。

接收到聊天消息后须告诉服务器接收成功,格式如下:

1030196367;17;28656;4b2b432f;XXXXXX;1030196367;54028;2;3305670154;

显然,服务器接收到的第三个、第五个、第十六个数是需要用的,数据比较容易分析,这里不再多说明。如果不回复这条消息,服务器会以为客户端没有收到该条聊天内容,会再次发送;当然即使回复了也可能重复接收,所以需要记录聊天内容编号以处理是否已经接收过。

作者:yjh4866

源地址:http://blog.csdn.net/yjh4866

原文地址:https://www.cnblogs.com/yjh4866/p/6253896.html