1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rainbond-rainbond-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
logSocket.js 2.2 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
zsl Отправлено 5 лет назад ab16b2e
import TimerQueue from "./timerQueue";
function noop() {}
function LogSocket(option) {
option = option || {};
this.url = option.url;
this.eventId = option.eventId;
this.onOpen = option.onOpen || noop;
this.onMessage = option.onMessage || noop;
this.onError = option.onError || noop;
this.onClose = option.onClose || noop;
this.onTimeout = option.onTimeout || noop;
this.onSuccess = option.onSuccess || noop;
this.onComplete = option.onComplete || noop;
this.onFail = option.onFail || noop;
this.webSocket = new WebSocket(this.url);
this.webSocket.onopen = this._onOpen.bind(this);
this.webSocket.onmessage = this._onMessage.bind(this);
this.webSocket.onclose = this._onClose.bind(this);
this.webSocket.onerror = this._onError.bind(this);
this.timerQueue = new TimerQueue({
onExecute: this.onMessage,
autoStart: true,
interval: option.interval || 10
});
}
LogSocket.prototype = {
constructor: LogSocket,
getSocket() {
return this.webSocket;
},
close() {
this.webSocket && this.webSocket.close();
},
_onOpen(evt) {
this.webSocket.send(`event_id=${this.eventId}`);
this.onOpen();
},
_onMessage(evt) {
// 代表连接成功, 不做任何处理
if (evt.data != "ok") {
const data = JSON.parse(evt.data);
// 判断是否最后一步
if (data.step === "callback" || data.step === "last") {
this.webSocket && this.webSocket.close();
if (data.status === "success") {
this.onSuccess(data);
} else if (data.status === "timeout") {
this.onTimeout(data);
} else if (data.status === "failure") {
data.message = `<span style="color:#a94442">${data.message}</span>`;
this.onFail(data);
}
this.onComplete(data);
}
this.timerQueue.add(data);
}
},
_onClose(evt) {
this.onClose && this.onClose();
},
_onError() {
this.onError && this.onError();
},
destroy() {
this.onMessage = null;
this.onError = null;
this.onClose = null;
this.onTimeout = null;
this.onSuccess = null;
this.onComplete = null;
this.onFail = null;
this.destroyed = true;
this.close();
}
};
export default LogSocket;

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/rainbond-rainbond-ui.git
git@gitlife.ru:oschina-mirror/rainbond-rainbond-ui.git
oschina-mirror
rainbond-rainbond-ui
rainbond-rainbond-ui
v5.2.0-beta2