douyujs
douyujs copied to clipboard
现在还可以用吗?
抱歉,我刚才试了下是可以用的,不知道有没有提供发送弹幕的功能呢?
楼上找到发送的方法了吗?
可以考虑用js模拟点击。。但我还是没深研究。现在比较需要的是giftId和礼物的对照表。。。尴尬
可以用倒是可以用,gift对照表是实时变化的 http://open.douyucdn.cn/api/RoomApi/room/房间号 能够获取到最新的。
另外,up提供的方法资源没有释放。 需要给/chat/room.js添加一个函数
Room.prototype.close = function(){ this.removeAllListeners(); clearInterval(this.intervalId); }
结束的时候调用,否则会占用大量资源。
消息序列化和反序列化实现的有问题,遇到递归或数组时就不work了,我重写了,懒得提交pr了,直接贴代码。
var utils = {
replaceAll: function(str, search, replacement) {
if(str == null || str.length <= 0) {
return "";
}
return str.replace(new RegExp(search, 'g'), replacement);
},
escape: function(field) {
if(!field || field.length <= 0) {
return "";
}
field = "" + field;
field = utils.replaceAll(field, "@", "@A");
field = utils.replaceAll(field, "/", "@S");
return field;
},
unescape: function(field) {
if(!field || field.length <= 0) {
return "";
}
field = "" + field;
field = utils.replaceAll(field, "@S", "/");
field = utils.replaceAll(field, "@A", "@");
return field;
},
serialize: function serialize(data) {
if(typeof data === 'object'){
if(isNaN(data.length)){ //object
var result = '';
for(var key in data){
if(!data.hasOwnProperty(key)) continue;
result += utils.escape(key) + "@=" + utils.escape(utils.serialize(data[key])) + "/";
}
return result;
}else{ //array
var result = '';
for(var i=0; i<data.length; i++){
result += utils.escape(utils.serialize(data[i])) + "/";
}
return result;
}
}else{
return utils.escape(data);
}
},
deserialize: function(raw) {
if(raw.indexOf('/') >= 0){
var parts = raw.split("/");
parts.pop();
if(parts[0].indexOf("@=") >= 0){ // object
var result = {};
for(var i=0; i<parts.length; i++){
var tmp = parts[i].split("@=");
var key = tmp[0];
var value = tmp[1];
result[utils.unescape(key)] = utils.deserialize(utils.unescape(value));
}
return result;
}else{ //array
var result = [];
for(var i=0; i<parts.length; i++){
result.push(utils.deserialize(utils.unescape(parts[i])));
}
return result;
}
}else{
return utils.unescape(raw);
}
},
};
module.exports = utils;
可以用下面的代码来测试下
var utils = require('./utils');
var sss = utils.serialize({
a_str1: 'a',
a_str2: '@b',
a_str3: '/c',
a_obj: {
a: 'a',
b: '@b',
c: '/c',
d: [
'aaa',
'@@b',
'//c'
]
},
a_arr: [
'a',
'@b',
'/c',
{
aaa: 'aaa',
bbb: '@@b',
ccc: '//c'
}
]
});
console.log(sss);
console.log(utils.deserialize(sss));
斗鱼基本倒了吧。手动滑稽
技术问题,无关斗鱼倒不倒
问题是有,但是还没遇见类似的包需要序列化或者反序列化,我直接就用了。给脑编大佬递茶。
| | 孙宗宝 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年03月07日 12:46,xiaozhuai, Weihang Ding 写道:
技术问题,无关斗鱼倒不倒
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
脑编?没遇到?呵呵 你真的好好看过斗鱼的弹幕协议吗
或许对于你来说 it just work就完了
别呵呵我,我确实没遇到,我只实现了我需要的。
| | 孙宗宝 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年03月13日 19:14,xiaozhuai, Weihang Ding 写道:
脑编?没遇到?呵呵 你真的好好看过斗鱼的弹幕协议吗
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
我没空呵呵你 也不是脑编 我放出来只是为了不让需要的人踩坑 你可以不需要 说我脑编几个意思
脑编啥时候变成贬义词了?
| | 孙宗宝 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年03月13日 19:18,xiaozhuai, Weihang Ding 写道:
我没空呵呵你 也不是脑编 我放出来只是为了不让需要的人踩坑 你可以不需要 说我脑编几个意思
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
是我和时代脱节了还是网络语言环境变了?
| | 孙宗宝 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年03月13日 19:19,Zonas Sun 写道: 脑编啥时候变成贬义词了?
| | 孙宗宝 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年03月13日 19:18,xiaozhuai, Weihang Ding 写道:
我没空呵呵你 也不是脑编 我放出来只是为了不让需要的人踩坑 你可以不需要 说我脑编几个意思
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
如果我理解错了我道歉,交流技术的地方还是心平气和比较好,顺便我贴出为什么我说原本的序列化和反序列化存在问题的消息案例,多的不说。
我也解释一下脑编和手编。手编才是贬义词,指的是不用脑子。我还纳闷呢,夸一句招呵呵了。大概是语言环境有些差异误会了。
| | 孙宗宝 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年03月13日 19:22,xiaozhuai, Weihang Ding 写道:
如果我理解错了我道歉,交流技术的地方还是心平气和比较好,顺便我贴出为什么我说原本的序列化和反序列化存在问题的消息案例,多的不说。
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
type@=online_noble_list/num@=498/rid@=61372/nl@=uid@AA=16234611@ASnn@AA=火柴君驻地球办事处@ASicon@AA=avanew@AASface@AAS201707@AAS10@AAS21@AAS92ffec7051fb43c222e1d4322176ad9e@ASne@AA=6@ASlv@AA=58@ASrk@AA=66@ASpg@AA=1@ASrg@AA=4@ASsahf@AA=0@AS@Suid@AA=79849613@ASnn@AA=0o奕o0@ASicon@AA=avanew@AASface@AAS201801@AAS25@AAS23@AAS9417e571297f28cb9f3f09196e3f9839@ASne@AA=4@ASlv@AA=57@ASrk@AA=44@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=90693352@ASnn@AA=DY娱乐八卦@ASicon@AA=avanew@AASface@AAS201801@AAS25@AAS19@AAS911e79ce36a67e4a7bd3d12167f105d8@ASne@AA=4@ASlv@AA=38@ASrk@AA=44@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=180968305@ASnn@AA=三木zzsen@ASicon@AA=avatar@AASdefault@AAS09@ASne@AA=3@ASlv@AA=40@ASrk@AA=33@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=163643478@ASnn@AA=7岁小可爱@ASicon@AA=avanew@AASface@AAS201803@AAS03@AAS02@AAS89daaa8eb154216be727dea8b1dfe250@ASne@AA=3@ASlv@AA=39@ASrk@AA=33@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=135509603@ASnn@AA=simmonbak@ASicon@AA=avanew@AASface@AAS201704@AAS22@AAS20@AASf76dd61efef14e605529d035457d1870@ASne@AA=3@ASlv@AA=27@ASrk@AA=33@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=44462919@ASnn@AA=来自成都的一位沫沫@ASicon@AA=avanew@AASface@AAS201711@AAS19@AAS10@AAS9751c685825a3802b8bc8ba6fa040859@ASne@AA=2@ASlv@AA=35@ASrk@AA=22@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=154940848@ASnn@AA=JohnV8@ASicon@AA=avanew@AASface@AAS201708@AAS05@AAS15@AASd9328ceb088da4ed6d0c5d7f12ac3b85@ASne@AA=2@ASlv@AA=31@ASrk@AA=22@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=2561680@ASnn@AA=御龙小哥哥@ASicon@AA=avanew@AASface@AAS201802@AAS12@AAS11@AAS62d684f32bf9060d45f9f46e8aa2a525@ASne@AA=1@ASlv@AA=60@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=9858752@ASnn@AA=小名丶戴尼飞@ASicon@AA=avanew@AASface@AAS201801@AAS13@AAS20@AAS61b454df4c12c18bd4d83cd37c6b69be@ASne@AA=1@ASlv@AA=40@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=118425@ASnn@AA=水苏铃兰栀子花@ASicon@AA=avanew@AASface@AAS201701@AAS25@AAS11@AASb0303d2a8eabfd40e0df8913d2707630@ASne@AA=1@ASlv@AA=39@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=11262204@ASnn@AA=中德炮兵团丶扛把子@ASicon@AA=avanew@AASface@AAS201803@AAS09@AAS00@AAS345911e9d484c1b0863f950d4e38b153@ASne@AA=1@ASlv@AA=39@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=129642315@ASnn@AA=妞酱荳包@ASicon@AA=avanew@AASface@AAS201801@AAS23@AAS22@AAS9f036d58822145076d04a635d2352331@ASne@AA=1@ASlv@AA=37@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=74000632@ASnn@AA=果樂灬超超@ASicon@AA=avanew@AASface@AAS201709@AAS11@AAS17@AASb602cc48618e8c53266960f8ce32abce@ASne@AA=1@ASlv@AA=36@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=31832154@ASnn@AA=Bosingwa暗礁@ASicon@AA=avanew@AASface@AAS201803@AAS07@AAS09@AASec7ee0628bff731fc6cc83d522b20c04@ASne@AA=1@ASlv@AA=36@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=46911144@ASnn@AA=菠萝赛东小迷弟@ASicon@AA=avanew@AASface@AAS201802@AAS07@AAS13@AASa44ac1d59b86287888e4024181c7b180@ASne@AA=1@ASlv@AA=35@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=65048575@ASnn@AA=晓晓晓晓鹏@ASicon@AA=avatar@AASface@AAS201608@AAS22@AAS6fb7e22cc6db0825cb916b4d1819108e@ASne@AA=1@ASlv@AA=35@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=76264130@ASnn@AA=恋上丿苏苏的葫芦娃@ASicon@AA=avanew@AASface@AAS201802@AAS05@AAS13@AAS3d335866968529b722e12296a369e987@ASne@AA=1@ASlv@AA=33@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=115197220@ASnn@AA=馨悦悦动@ASicon@AA=avanew@AASface@AAS201707@AAS07@AAS16@AAS65343a8fc9e81d93dea627953f74ebdf@ASne@AA=1@ASlv@AA=32@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@Suid@AA=2295987@ASnn@AA=蘇蘇同学@ASicon@AA=avanew@AASface@AAS201803@AAS05@AAS21@AAS0e7659caecb8e170efbd404e7e0a16df@ASne@AA=1@ASlv@AA=32@ASrk@AA=11@ASpg@AA=1@ASrg@AA=1@ASsahf@AA=0@AS@S/
{"type":"online_noble_list","num":"498","rid":"61372","nl":[{"uid":"16234611","nn":"火柴君驻地球办事处","icon":["avanew","face","201707","10","21"],"ne":"6","lv":"58","rk":"66","pg":"1","rg":"4","sahf":"0"},{"uid":"79849613","nn":"0o奕o0","icon":["avanew","face","201801","25","23"],"ne":"4","lv":"57","rk":"44","pg":"1","rg":"1","sahf":"0"},{"uid":"90693352","nn":"DY娱乐八卦","icon":["avanew","face","201801","25","19"],"ne":"4","lv":"38","rk":"44","pg":"1","rg":"1","sahf":"0"},{"uid":"180968305","nn":"三木zzsen","icon":["avatar","default"],"ne":"3","lv":"40","rk":"33","pg":"1","rg":"1","sahf":"0"},{"uid":"163643478","nn":"7岁小可爱","icon":["avanew","face","201803","03","02"],"ne":"3","lv":"39","rk":"33","pg":"1","rg":"1","sahf":"0"},{"uid":"135509603","nn":"simmonbak","icon":["avanew","face","201704","22","20"],"ne":"3","lv":"27","rk":"33","pg":"1","rg":"1","sahf":"0"},{"uid":"44462919","nn":"来自成都的一位沫沫","icon":["avanew","face","201711","19","10"],"ne":"2","lv":"35","rk":"22","pg":"1","rg":"1","sahf":"0"},{"uid":"154940848","nn":"JohnV8","icon":["avanew","face","201708","05","15"],"ne":"2","lv":"31","rk":"22","pg":"1","rg":"1","sahf":"0"},{"uid":"2561680","nn":"御龙小哥哥","icon":["avanew","face","201802","12","11"],"ne":"1","lv":"60","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"9858752","nn":"小名丶戴尼飞","icon":["avanew","face","201801","13","20"],"ne":"1","lv":"40","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"118425","nn":"水苏铃兰栀子花","icon":["avanew","face","201701","25","11"],"ne":"1","lv":"39","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"11262204","nn":"中德炮兵团丶扛把子","icon":["avanew","face","201803","09","00"],"ne":"1","lv":"39","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"129642315","nn":"妞酱荳包","icon":["avanew","face","201801","23","22"],"ne":"1","lv":"37","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"74000632","nn":"果樂灬超超","icon":["avanew","face","201709","11","17"],"ne":"1","lv":"36","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"31832154","nn":"Bosingwa暗礁","icon":["avanew","face","201803","07","09"],"ne":"1","lv":"36","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"46911144","nn":"菠萝赛东小迷弟","icon":["avanew","face","201802","07","13"],"ne":"1","lv":"35","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"65048575","nn":"晓晓晓晓鹏","icon":["avatar","face","201608","22"],"ne":"1","lv":"35","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"76264130","nn":"恋上丿苏苏的葫芦娃","icon":["avanew","face","201802","05","13"],"ne":"1","lv":"33","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"115197220","nn":"馨悦悦动","icon":["avanew","face","201707","07","16"],"ne":"1","lv":"32","rk":"11","pg":"1","rg":"1","sahf":"0"},{"uid":"2295987","nn":"蘇蘇同学","icon":["avanew","face","201803","05","21"],"ne":"1","lv":"32","rk":"11","pg":"1","rg":"1","sahf":"0"}]}
上面是原始数据包,后面是正常反序列化的结果,正确处理了数组和嵌套。
这个消息案例是刚刚从斗鱼抓来的,online_noble_list是现场贵宾列表的数据