pixelstream-cn
Version:
基于虚幻引擎的像素流平台
68 lines (59 loc) • 1.86 kB
JavaScript
function randomString(length) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
return result;
}
import callback from "./../callback.js";
import bufferUtil from "./../util/buffer.js";
import messageType from "./messageType.js";
import baseStructure from "./../structure/base.js";
export default class base {
constructor(action,data,callback){
if(!action){
return ;
}
this.messageType = messageType.UIInteraction;
this.$data=null;
this.callback=callback ? true : false;
this.callback=true;
this.$action=action;
if(data instanceof baseStructure){
this.$data = data.data;
}else{
this.$data=data;
}
}
get buffer(){
if(!this.data){
if(this.messageId){
this.$data.message="64684311684646";
}
this.data=this.getData();
}
return this.data.buffer;
}
getData() {
let descriptor={
action:this.$action,
data:this.$data,
};
if(this.callback){
descriptor.message=this.setMessage();
}
return this.serialize(descriptor);
}
serialize(descriptor){
let descriptorAsString = JSON.stringify(descriptor)
return bufferUtil.toBuffer(descriptorAsString,this.messageType);
}
setMessage(){
let message = randomString(32);
this.promise = new Promise((resolve,reject)=>{
callback.setFunction(message,(response)=>{
resolve(response);
});
})
return message;
}
}