UNPKG

pixelstream-cn

Version:

基于虚幻引擎的像素流平台

82 lines (78 loc) 2.18 kB
const WebSocket = window.WebSocket || window.MozWebSocket import StringEncodeDecode from "./../util/stringEncodeDecode.js"; export default class wsocket{ setEncodeKey(key){ this.encodedecode = new StringEncodeDecode(key); return this; } setHost(host){ this.host=host; return this; } setMessageConfig(fn){ this.messageConfigHandel = fn; } //sdp answer消息 setMessageAnswer(fn){ this.messageAnswerHandel = fn; } setMessageIceCandidate(fn){ this.messageIceCandidateHandel = fn; } setMessageError(fn){ this.messageErrorHandel=fn; } setMessageWait(fn){ this.messageWaitHandel=fn; } message(msg){ switch (msg.type) { case 'config': this.messageConfigHandel(msg); break case 'answer': this.messageAnswerHandel(msg); break case 'iceCandidate': this.messageIceCandidateHandel(msg); break case "error": this.messageErrorHandel(msg.message); break; case "wait": this.messageWaitHandel(msg.num) break; } } run(){ let _this=this; this.ws = new WebSocket(this.host) this.ws.onopen = ()=>{ _this.send({ type: 'ready', }) _this.timeInvate = setInterval(() => { _this.send({ type: 'ping', }) }, 50000) } this.ws.onmessage = (event) => { var msg = JSON.parse(_this.encodedecode.decode(event.data)) _this.message(msg); } this.ws.onclose = (event) => { if (_this.timeInvate) { clearInterval(_this.timeInvate) } } } send(data){ if(this.ws){ this.ws.send(this.encodedecode.encode(JSON.stringify(data))); } } close(){ this.ws.close(); } }