PageSourceSearch

https://app.schmetterling-argus.de/js/modlotus/socket-gosuite.js

js schmetterling-argus.de collected 2026-09-26 00:02:02 UTC 3,278 bytes, 138 lines download raw bytes

1var GoSuiteSocket = (function () {
2    var socket = new WebSocket('wss://socket.go-suite.com/ws');
3    var eventsHandlers = {};
4    var subscriptions = [];
5    var subscriptionsBeforeOpenSocket = [];
6    var isOpen = false;
7
8    function on(event, cb) {
9        if (event === 'open' && isOpen) {
10            cb();
11            return;
12        }
13
14        if (!eventsHandlers[event]) {
15            eventsHandlers[event] = [];
16        }
17
18        eventsHandlers[event].push(cb);
19
20        return GoSuiteSocket;
21    }
22
23    function off(event, cb) {
24        eventsHandlers[event] = (eventsHandlers[event] || []).filter(function (registeredCb) {
25            return cb !== registeredCb;
26        });
27
28        return GoSuiteSocket;
29    }
30
31    function send(requestType, data) {
32        data.request = requestType;
33        socket.send(JSON.stringify(data));
34
35        return GoSuiteSocket;
36    }
37
38    function _subscribe(channels) {
39        send('subscribe', { to: channels });
40    }
41
42    function subscribe(channels) {
43        if (!isOpen) {
44            subscriptionsBeforeOpenSocket.push(channels);
45            return;
46        }
47
48        if (!Array.isArray(channels)) {
49            channels = [channels];
50        }
51
52        var subscribeTo = channels.filter(function (ch) {
53            return subscriptions.indexOf(ch) === -1;
54        });
55
56        subscribeTo.forEach(function (ch) {
57            subscriptions.push(ch);
58        });
59
60        _subscribe(subscribeTo);
61
62        return GoSuiteSocket;
63    }
64
65    function _unsubscribe(channels) {
66        send('unsubscribe', { from: channels });
67    }
68
69    function unsubscribe(channels) {
70        if (!Array.isArray(channels)) {
71            channels = [channels];
72        }
73
74        channels.forEach(function (c) {
75            subscriptions = subscriptions.filter(function (ch) {
76                return ch !== c;
77            });
78        });
79
80        _unsubscribe(channels);
81
82        return GoSuiteSocket;
83    }
84
85    socket.onopen = function () {
86        isOpen = true;
87
88        if (subscriptionsBeforeOpenSocket.length) {
89            subscriptionsBeforeOpenSocket.forEach(function (tempSub) {
90                subscribe(tempSub);
91            });
92            subscriptionsBeforeOpenSocket = [];
93        }
94
95        (eventsHandlers['open'] || []).forEach(function (cb) {
96            cb();
97        });
98    };
99
100    socket.onmessage = function (e) {
101        try {
102            var data = JSON.parse(e.data || null);
103            (eventsHandlers['message'] || []).forEach(function (cb) {
104                cb(data);
105            });
106
107            var rq = data && data.request;
108            (eventsHandlers[rq] || []).forEach(function (cb) {
109                cb(data);
110            });
111
112        } catch (err) {
113            (eventsHandlers['error'] || []).forEach(function (cb) {
114                cb(err);
115            });
116        }
117    };
118
119    socket.onclose = function () {
120        (eventsHandlers['close'] || []).forEach(function (cb) {
121            cb();
122        });
123    };
124
125    socket.onerror = function (err) {
126        (eventsHandlers['error'] || []).forEach(function (cb) {
127            cb(err);
128        });
129    };
130
131    return {
132        on: on,
133        off: off,
134        subscribe: subscribe,
135        unsubscribe: unsubscribe,
136        send: send
137    };
138})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.