@voicenter-team/events-sdk 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/voicenter-events-sdk.d.ts +185 -36
- package/package.json +4 -1
- package/.eslintrc.cjs +0 -16
- package/.github/workflows/main.yml +0 -16
- package/.idea/VoicenterEventsSDK.iml +0 -12
- package/.idea/git_toolbox_prj.xml +0 -15
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/jsLibraryMappings.xml +0 -6
- package/.idea/jsLinters/eslint.xml +0 -7
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.nvmrc +0 -1
- package/TODELETE_TEMP/events.json +0 -69122
- package/TODELETE_TEMP/temphelper.cjs +0 -101
- package/docs/package-lock.json +0 -3820
- package/docs/package.json +0 -25
- package/docs/src/.vuepress/client.js +0 -8
- package/docs/src/.vuepress/components/Demo.vue +0 -183
- package/docs/src/.vuepress/config.js +0 -60
- package/docs/src/.vuepress/public/favicon.ico +0 -0
- package/docs/src/.vuepress/public/images/logo.png +0 -0
- package/docs/src/.vuepress/styles/index.scss +0 -0
- package/docs/src/.vuepress/styles/index.styl +0 -8
- package/docs/src/.vuepress/styles/palette.styl +0 -10
- package/docs/src/demo.md +0 -7
- package/docs/src/index.md +0 -4
- package/jest.config.js +0 -11
- package/src/classes/auth/auth.class.ts +0 -205
- package/src/classes/auth/auth.urls.ts +0 -10
- package/src/classes/events-sdk/events-sdk-default-options.ts +0 -46
- package/src/classes/events-sdk/events-sdk.class.ts +0 -250
- package/src/classes/events-sdk/events-sdk.test.ts +0 -9
- package/src/classes/events-sdk/events-sdk.types.ts +0 -69
- package/src/classes/socket-io/socket-io.class.ts +0 -172
- package/src/classes/socket-io/socket-io.d.ts +0 -10
- package/src/classes/socket-io/versions/index.ts +0 -52
- package/src/classes/socket-io/versions/v1_3_7.js +0 -2083
- package/src/classes/storage/storage.class.ts +0 -43
- package/src/enum/auth.enum.ts +0 -4
- package/src/enum/events.enum.ts +0 -98
- package/src/index.ts +0 -6
- package/src/types/auth.d.ts +0 -49
- package/src/types/events.common.d.ts +0 -110
- package/src/types/events.d.ts +0 -175
- package/src/types/listeners.d.ts +0 -37
- package/src/types/public-api.d.ts +0 -39
- package/src/types/socket.d.ts +0 -5
- package/swagger/generated/Swagger.json +0 -1
- package/swagger/index.js +0 -60
- package/swagger/package.json +0 -21
- package/swagger/scripts/update-swagger-json.js +0 -53
- package/swagger/yarn.lock +0 -2100
- package/tsconfig.json +0 -50
- package/vite.config.ts +0 -41
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import AuthClass from '@/classes/auth/auth.class'
|
|
2
|
-
import { debounce } from 'lodash'
|
|
3
|
-
import { eventsSdkDefaultOptions } from '@/classes/events-sdk/events-sdk-default-options'
|
|
4
|
-
import { SocketIoClass } from '@/classes/socket-io/socket-io.class'
|
|
5
|
-
import { EventsSdkOptions, ReconnectOptions, Server, ServerParameter } from '@/classes/events-sdk/events-sdk.types'
|
|
6
|
-
import { SocketTyped } from '@/types/socket'
|
|
7
|
-
import {
|
|
8
|
-
GenericEventWrapper,
|
|
9
|
-
EventSpecificCallback,
|
|
10
|
-
EventCallbackListenersMap,
|
|
11
|
-
EventTypeData,
|
|
12
|
-
EventTypeNames,
|
|
13
|
-
} from '@/types/events'
|
|
14
|
-
import { EventsEnum } from '@/enum/events.enum'
|
|
15
|
-
|
|
16
|
-
class EventsSdkClass{
|
|
17
|
-
constructor (options: EventsSdkOptions) {
|
|
18
|
-
this.options = {
|
|
19
|
-
...eventsSdkDefaultOptions,
|
|
20
|
-
...options
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
this.server = this.options.fallbackServer
|
|
24
|
-
|
|
25
|
-
this.argumentOptions = {
|
|
26
|
-
...options
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
private argumentOptions: EventsSdkOptions
|
|
31
|
-
public readonly options: EventsSdkOptions = {
|
|
32
|
-
...eventsSdkDefaultOptions
|
|
33
|
-
}
|
|
34
|
-
public servers: Server[] = []
|
|
35
|
-
public server: Server
|
|
36
|
-
public socket: SocketTyped | undefined
|
|
37
|
-
|
|
38
|
-
public authClass = new AuthClass(this)
|
|
39
|
-
public socketIoClass = new SocketIoClass(this)
|
|
40
|
-
|
|
41
|
-
public reconnectOptions: ReconnectOptions = {
|
|
42
|
-
retryCount: 1,
|
|
43
|
-
maxReconnectAttempts: this.options.maxReconnectAttempts,
|
|
44
|
-
reconnectionDelay: this.options.reconnectionDelay, // 10 seconds. After each re-connection attempt this number will increase (minReconnectionDelay * attempts) => 10, 20, 30, 40 seconds ... up to 5min
|
|
45
|
-
minReconnectionDelay: this.options.reconnectionDelay, // 10 seconds
|
|
46
|
-
maxReconnectionDelay: 60000 * 5 // 5 minutes
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public retryConnection = debounce(this.connect.bind(this), this.reconnectOptions.reconnectionDelay, {
|
|
50
|
-
leading: true,
|
|
51
|
-
trailing: false
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
private listeners: EventCallbackListenersMap = {
|
|
55
|
-
[EventsEnum.ALL_EXTENSION_STATUS]: [],
|
|
56
|
-
[EventsEnum.ALL_DIALER_STATUS]: [],
|
|
57
|
-
[EventsEnum.ALL_USERS_STATUS]: [],
|
|
58
|
-
[EventsEnum.QUEUE_EVENT]: [],
|
|
59
|
-
[EventsEnum.EXTENSION_EVENT]: [],
|
|
60
|
-
[EventsEnum.DIALER_EVENT]: [],
|
|
61
|
-
[EventsEnum.LOGIN_SUCCESS]: [],
|
|
62
|
-
[EventsEnum.LOGIN_STATUS]: [],
|
|
63
|
-
[EventsEnum.KEEP_ALIVE_RESPONSE]: [],
|
|
64
|
-
[EventsEnum.ONLINE_STATUS_EVENT]: []
|
|
65
|
-
}
|
|
66
|
-
private allListeners: Array<(data: GenericEventWrapper) => void> = []
|
|
67
|
-
|
|
68
|
-
public on<T extends EventTypeNames> (event: T, callback: EventSpecificCallback<T>): void
|
|
69
|
-
public on (event: '*', callback: (data: GenericEventWrapper) => void): void
|
|
70
|
-
public on (event: unknown, callback: unknown) {
|
|
71
|
-
if (event === '*') {
|
|
72
|
-
this.allListeners.push(callback as (data: GenericEventWrapper) => void)
|
|
73
|
-
} else {
|
|
74
|
-
// Handle specific event type with strong typing
|
|
75
|
-
this.listeners[event as EventTypeNames].push(callback as EventSpecificCallback<EventTypeNames>)
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public off<T extends EventTypeNames> (event: T, callback: EventSpecificCallback<T>): void
|
|
80
|
-
public off (event: '*', callback: (data: GenericEventWrapper) => void): void
|
|
81
|
-
public off (event: unknown, callback: unknown) {
|
|
82
|
-
if (event === '*') {
|
|
83
|
-
this.allListeners = this.allListeners.filter(item => item !== callback)
|
|
84
|
-
} else {
|
|
85
|
-
const data = this.listeners[event as EventTypeNames] as Array<EventSpecificCallback<EventTypeNames>>
|
|
86
|
-
const filtered = data.filter(item => item !== callback)
|
|
87
|
-
|
|
88
|
-
this.listeners = {
|
|
89
|
-
...this.listeners,
|
|
90
|
-
[event as EventTypeNames]: filtered
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
public emit <T extends EventTypeNames> (event: T, data: EventTypeData<T>) {
|
|
96
|
-
this.socketIoClass.lastEventTimestamp = new Date().getTime()
|
|
97
|
-
|
|
98
|
-
this.listeners[event].forEach(callback => callback({
|
|
99
|
-
name: event,
|
|
100
|
-
data
|
|
101
|
-
}))
|
|
102
|
-
|
|
103
|
-
const allEventData: GenericEventWrapper = {
|
|
104
|
-
name: event,
|
|
105
|
-
data: data as any
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
this.allListeners.forEach((callback) => callback(allEventData))
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
public connect (server: ServerParameter = ServerParameter.DEFAULT, skipLogin = false) {
|
|
112
|
-
let serverToConnect: Server | undefined
|
|
113
|
-
|
|
114
|
-
if (server === ServerParameter.DEFAULT) {
|
|
115
|
-
serverToConnect = this.findCurrentServer()
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (server === ServerParameter.NEXT) {
|
|
119
|
-
serverToConnect = this.findNextAvailableServer()
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (server === ServerParameter.PREVIOUS) {
|
|
123
|
-
serverToConnect = this.findMaxPriorityServer()
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (!serverToConnect) {
|
|
127
|
-
this.server = this.findCurrentServer()
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
this.socketIoClass.doReconnect = true
|
|
131
|
-
|
|
132
|
-
this.socketIoClass.initSocketConnection()
|
|
133
|
-
|
|
134
|
-
this.socketIoClass.initSocketEvents()
|
|
135
|
-
|
|
136
|
-
this.socketIoClass.initKeepAlive()
|
|
137
|
-
|
|
138
|
-
// TODO: check if it is needed here
|
|
139
|
-
if (skipLogin) {
|
|
140
|
-
return
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public disconnect () {
|
|
145
|
-
this.socketIoClass.doReconnect = false
|
|
146
|
-
this.socketIoClass.closeAllConnections()
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
public clearKeepAliveInterval () {
|
|
150
|
-
this.socketIoClass.clearKeepAliveInterval()
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
private findCurrentServer (): Server {
|
|
154
|
-
if (this.servers.length) {
|
|
155
|
-
this.server = this.servers[0]
|
|
156
|
-
}
|
|
157
|
-
if (!this.server) {
|
|
158
|
-
this.server = this.options.fallbackServer
|
|
159
|
-
}
|
|
160
|
-
return this.server
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
private findNextAvailableServer (): Server {
|
|
164
|
-
// this.log(INFO, 'Failover -> Trying to find another server');
|
|
165
|
-
|
|
166
|
-
const currentServerPriority = this.server.Priority
|
|
167
|
-
|
|
168
|
-
const nextServerPriority = currentServerPriority + 1
|
|
169
|
-
|
|
170
|
-
const nextServer = this.servers.find(server => server.Priority === nextServerPriority) || this.findMinPriorityServer()
|
|
171
|
-
|
|
172
|
-
this.server = { ...nextServer }
|
|
173
|
-
|
|
174
|
-
// this.log(INFO, 'Failover -> Found new server. Connecting to it...', this.server);
|
|
175
|
-
|
|
176
|
-
return this.server
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
private findMaxPriorityServer (): Server {
|
|
180
|
-
// this.log(INFO, 'Fallback -> Trying to find previous server');
|
|
181
|
-
|
|
182
|
-
const maxPriorityServer = this.getServerWithHighestPriority(this.servers)
|
|
183
|
-
|
|
184
|
-
if (!this.server) {
|
|
185
|
-
this.server = maxPriorityServer
|
|
186
|
-
|
|
187
|
-
return this.server
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (this.server && maxPriorityServer.Domain !== this.server.Domain) {
|
|
191
|
-
this.server = maxPriorityServer
|
|
192
|
-
|
|
193
|
-
// this.log(INFO, 'Fallback -> Trying to find previous server');
|
|
194
|
-
|
|
195
|
-
return this.server
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return this.server
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
private findMinPriorityServer (): Server {
|
|
202
|
-
const minPriority = Math.min(...this.servers.map(server => server.Priority))
|
|
203
|
-
|
|
204
|
-
const server = this.servers.find(server => server.Priority === minPriority)
|
|
205
|
-
|
|
206
|
-
if (server) {
|
|
207
|
-
this.server = server
|
|
208
|
-
|
|
209
|
-
return this.server
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return this.server
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
public getServerWithHighestPriority (servers: Server[]): Server {
|
|
216
|
-
let chosenServer: Server | undefined
|
|
217
|
-
|
|
218
|
-
let maxPriority = Number.MAX_SAFE_INTEGER
|
|
219
|
-
|
|
220
|
-
chosenServer = servers.find(server => {
|
|
221
|
-
if (server.Priority < maxPriority) {
|
|
222
|
-
maxPriority = server.Priority
|
|
223
|
-
|
|
224
|
-
chosenServer = server
|
|
225
|
-
}
|
|
226
|
-
})
|
|
227
|
-
|
|
228
|
-
return chosenServer ? chosenServer : this.server
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
public async init () {
|
|
232
|
-
if (this.socket) {
|
|
233
|
-
// this.emit(eventTypes.CLOSE);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
await this.authClass.login(this.options)
|
|
237
|
-
|
|
238
|
-
this.getServers()
|
|
239
|
-
|
|
240
|
-
return true
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
private getServers () {
|
|
244
|
-
if (this.options.serverFetchStrategy === 'static' && this.argumentOptions.servers && Array.isArray(this.argumentOptions.servers) && this.argumentOptions.servers.length > 1) {
|
|
245
|
-
this.servers = this.argumentOptions.servers
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
export default EventsSdkClass
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
2
|
-
import { eventsSdkDefaultOptions } from '@/classes/events-sdk/events-sdk-default-options'
|
|
3
|
-
|
|
4
|
-
describe('EventsSdkClass', () => {
|
|
5
|
-
it('should be true', () => {
|
|
6
|
-
const eventsSdkClass = new EventsSdkClass(eventsSdkDefaultOptions)
|
|
7
|
-
expect(eventsSdkClass.init()).toBe(true)
|
|
8
|
-
})
|
|
9
|
-
})
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { LoginType } from 'enum/auth.enum'
|
|
2
|
-
|
|
3
|
-
export interface EventsSdkOptions {
|
|
4
|
-
fallbackServer: Server,
|
|
5
|
-
refreshTokenUrl?: string,
|
|
6
|
-
refreshToken?: string,
|
|
7
|
-
servers?: string,
|
|
8
|
-
token: string,
|
|
9
|
-
tokenExpiry?: Date,
|
|
10
|
-
loginType: LoginType,
|
|
11
|
-
forceNew?: boolean,
|
|
12
|
-
reconnectionDelay: number,
|
|
13
|
-
reconnectionDelayMax?: number,
|
|
14
|
-
maxReconnectAttempts: number,
|
|
15
|
-
timeout?: number,
|
|
16
|
-
keepAliveTimeout: number,
|
|
17
|
-
idleInterval?: number,
|
|
18
|
-
protocol: string,
|
|
19
|
-
transports?: string[],
|
|
20
|
-
upgrade?: boolean,
|
|
21
|
-
serverFetchStrategy?: string,
|
|
22
|
-
serverType?: number,
|
|
23
|
-
useLogger?: boolean,
|
|
24
|
-
loggerSocketConnection?: string,
|
|
25
|
-
loggerServer?: string,
|
|
26
|
-
loggerConfig?: LoggerConfig,
|
|
27
|
-
loggerConnectOptions?: LoggerConnectOptions,
|
|
28
|
-
email: string,
|
|
29
|
-
password: string,
|
|
30
|
-
username: string,
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface Server {
|
|
34
|
-
Priority: number,
|
|
35
|
-
Domain: string,
|
|
36
|
-
URLID: number,
|
|
37
|
-
Version: string,
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export interface LoggerConfig {
|
|
41
|
-
logToConsole?: boolean,
|
|
42
|
-
overloadGlobalConsole?: boolean,
|
|
43
|
-
namespace?: string,
|
|
44
|
-
socketEmitInterval?: number
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface LoggerConnectOptions {
|
|
48
|
-
reconnection?: boolean,
|
|
49
|
-
reconnectionDelay?: number,
|
|
50
|
-
reconnectionAttempts?: number,
|
|
51
|
-
perMessageDeflate?: boolean,
|
|
52
|
-
upgrade?: boolean,
|
|
53
|
-
transports?: string[],
|
|
54
|
-
debug?: boolean
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export interface ReconnectOptions {
|
|
58
|
-
retryCount: number,
|
|
59
|
-
maxReconnectAttempts: number,
|
|
60
|
-
reconnectionDelay: number,
|
|
61
|
-
minReconnectionDelay: number,
|
|
62
|
-
maxReconnectionDelay: number
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export enum ServerParameter {
|
|
66
|
-
DEFAULT = 'default',
|
|
67
|
-
NEXT = 'next',
|
|
68
|
-
PREVIOUS = 'previous'
|
|
69
|
-
}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { ManagerOptions, SocketOptions } from 'socket.io-client'
|
|
2
|
-
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
3
|
-
import sockets, { TypedSocketIo } from '@/classes/socket-io/versions'
|
|
4
|
-
import { SocketTyped } from '@/types/socket'
|
|
5
|
-
import { ServerParameter } from '@/classes/events-sdk/events-sdk.types'
|
|
6
|
-
import { EventsEnum } from '@/enum/events.enum'
|
|
7
|
-
import { KeepAliveResponseEvent } from '@/types/events'
|
|
8
|
-
import { StorageClass } from '@/classes/storage/storage.class'
|
|
9
|
-
|
|
10
|
-
export class SocketIoClass{
|
|
11
|
-
constructor (private readonly eventsSdkClass: EventsSdkClass) {
|
|
12
|
-
this.eventsSdkClass = eventsSdkClass
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public io: SocketTyped | undefined
|
|
16
|
-
public ioFunction: TypedSocketIo | undefined
|
|
17
|
-
public lastEventTimestamp = new Date().getTime()
|
|
18
|
-
public doReconnect = true
|
|
19
|
-
private keepAliveInterval: ReturnType<typeof setInterval> | undefined
|
|
20
|
-
private keepReconnectInterval: ReturnType<typeof setInterval> | undefined
|
|
21
|
-
private connected = false
|
|
22
|
-
|
|
23
|
-
public getSocketIoFunction (Client: string) {
|
|
24
|
-
const parsedArray = Client.split('v=')
|
|
25
|
-
|
|
26
|
-
const version = 'v'
|
|
27
|
-
.concat(parsedArray[parsedArray.length - 1])
|
|
28
|
-
.replaceAll('.', '_')
|
|
29
|
-
|
|
30
|
-
this.ioFunction = sockets.getSocketVersion(version)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public initSocketConnection () {
|
|
34
|
-
const token = this.eventsSdkClass.authClass.token
|
|
35
|
-
|
|
36
|
-
const protocol = this.eventsSdkClass.options.protocol
|
|
37
|
-
|
|
38
|
-
const server = this.eventsSdkClass.server
|
|
39
|
-
|
|
40
|
-
try {
|
|
41
|
-
const domain = server.Domain
|
|
42
|
-
|
|
43
|
-
const url = `${protocol}://${domain}`
|
|
44
|
-
|
|
45
|
-
// this.log(INFO, 'Connecting to..', url);
|
|
46
|
-
|
|
47
|
-
const options: Partial<ManagerOptions & SocketOptions> = {
|
|
48
|
-
reconnection: false,
|
|
49
|
-
upgrade: false,
|
|
50
|
-
transports: [ 'websocket' ],
|
|
51
|
-
forceNew: true,
|
|
52
|
-
query: {
|
|
53
|
-
token
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (token) {
|
|
58
|
-
options.query = {
|
|
59
|
-
token
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (this.ioFunction) {
|
|
64
|
-
this.io = this.ioFunction(url, options)
|
|
65
|
-
}
|
|
66
|
-
} catch (e) {
|
|
67
|
-
// this.log(ERROR, e);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
public initSocketEvents () {
|
|
72
|
-
if (this.io) {
|
|
73
|
-
this.io
|
|
74
|
-
.on(EventsEnum.LOGIN_SUCCESS, (data) => this.eventsSdkClass.emit(EventsEnum.LOGIN_SUCCESS, data))
|
|
75
|
-
.on(EventsEnum.QUEUE_EVENT, (data) => this.eventsSdkClass.emit(EventsEnum.QUEUE_EVENT, data))
|
|
76
|
-
.on(EventsEnum.EXTENSION_EVENT, (data) => this.eventsSdkClass.emit(EventsEnum.EXTENSION_EVENT, data))
|
|
77
|
-
.on(EventsEnum.DIALER_EVENT, (data) => this.eventsSdkClass.emit(EventsEnum.DIALER_EVENT, data))
|
|
78
|
-
.on(EventsEnum.LOGIN_STATUS, (data) => this.eventsSdkClass.emit(EventsEnum.LOGIN_STATUS, data))
|
|
79
|
-
.on(EventsEnum.ALL_EXTENSION_STATUS, (data) => this.eventsSdkClass.emit(EventsEnum.ALL_EXTENSION_STATUS, data))
|
|
80
|
-
.on(EventsEnum.ALL_DIALER_STATUS, (data) => this.eventsSdkClass.emit(EventsEnum.ALL_DIALER_STATUS, data))
|
|
81
|
-
.on(EventsEnum.KEEP_ALIVE_RESPONSE, (data) => this.onKeepAliveResponse(data))
|
|
82
|
-
.on(EventsEnum.CONNECT, () => this.onConnect())
|
|
83
|
-
.on(EventsEnum.DISCONNECT, () => this.onDisconnect())
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
public clearKeepAliveInterval () {
|
|
88
|
-
if (this.keepAliveInterval) {
|
|
89
|
-
clearInterval(this.keepAliveInterval)
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public initKeepAlive () {
|
|
94
|
-
this.clearKeepAliveInterval()
|
|
95
|
-
|
|
96
|
-
this.keepAliveInterval = setInterval(async () => {
|
|
97
|
-
const now = new Date().getTime()
|
|
98
|
-
|
|
99
|
-
// if (now > this.lastEventTimestamp + delta) {
|
|
100
|
-
// this.eventsSdkClass.connect(ServerParameter.DEFAULT, true)
|
|
101
|
-
//
|
|
102
|
-
// return
|
|
103
|
-
// }
|
|
104
|
-
//
|
|
105
|
-
// if (!this.io) {
|
|
106
|
-
// this.initSocketConnection()
|
|
107
|
-
//
|
|
108
|
-
// return
|
|
109
|
-
// }
|
|
110
|
-
|
|
111
|
-
if (now > this.lastEventTimestamp + this.eventsSdkClass.options.keepAliveTimeout && this.io) {
|
|
112
|
-
this.io.emit(EventsEnum.KEEP_ALIVE, this.eventsSdkClass.authClass.token)
|
|
113
|
-
|
|
114
|
-
return
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
}, this.eventsSdkClass.options.keepAliveTimeout)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
public closeAllConnections () {
|
|
121
|
-
if (this.io) {
|
|
122
|
-
this.io.close()
|
|
123
|
-
|
|
124
|
-
this.io?.disconnect()
|
|
125
|
-
|
|
126
|
-
this.io = undefined
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
StorageClass.clearSessionStorage()
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
private onKeepAliveResponse (data: KeepAliveResponseEvent) {
|
|
133
|
-
if (data.errorCode) {
|
|
134
|
-
this.initSocketConnection()
|
|
135
|
-
|
|
136
|
-
return
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (this.connected) {
|
|
140
|
-
this.lastEventTimestamp = new Date().getTime()
|
|
141
|
-
} else {
|
|
142
|
-
this.initSocketConnection()
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
private onConnect () {
|
|
147
|
-
if (this.keepReconnectInterval) {
|
|
148
|
-
clearInterval(this.keepReconnectInterval)
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
this.connected = true
|
|
152
|
-
|
|
153
|
-
this.eventsSdkClass.emit(EventsEnum.ONLINE_STATUS_EVENT, { isSocketConnected: true })
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
private onDisconnect () {
|
|
157
|
-
this.connected = false
|
|
158
|
-
|
|
159
|
-
this.closeAllConnections()
|
|
160
|
-
|
|
161
|
-
this.eventsSdkClass.emit(EventsEnum.ONLINE_STATUS_EVENT, { isSocketConnected: false })
|
|
162
|
-
|
|
163
|
-
if (!this.doReconnect) {
|
|
164
|
-
return
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
this.keepReconnectInterval = setInterval(() => {
|
|
168
|
-
console.log('attempt to connect...')
|
|
169
|
-
this.eventsSdkClass.connect(ServerParameter.NEXT, true)
|
|
170
|
-
}, 15000)
|
|
171
|
-
}
|
|
172
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { io } from 'socket.io-client'
|
|
2
|
-
import { SocketTyped } from '@/types/socket'
|
|
3
|
-
|
|
4
|
-
const importModules: Record<string, { default?: unknown }> = import.meta.glob(
|
|
5
|
-
'./v*.js',
|
|
6
|
-
{ eager: true }
|
|
7
|
-
)
|
|
8
|
-
|
|
9
|
-
const SOCKET_NAME_REGEX = /v\d+_\d+_\d+/
|
|
10
|
-
|
|
11
|
-
export type TypedSocketIo = (...args: Parameters<typeof io>) => SocketTyped
|
|
12
|
-
|
|
13
|
-
type SocketIoFn = () => TypedSocketIo
|
|
14
|
-
|
|
15
|
-
function isSocketIoFn (socket: unknown): socket is SocketIoFn {
|
|
16
|
-
return typeof socket === 'function'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const sockets = Object.entries(importModules)
|
|
20
|
-
.reduce<Record<string, TypedSocketIo>>(
|
|
21
|
-
(acc, currentValue) => {
|
|
22
|
-
const module = currentValue[1].default
|
|
23
|
-
const moduleName = currentValue[0].match(SOCKET_NAME_REGEX)?.[0]
|
|
24
|
-
|
|
25
|
-
if (isSocketIoFn(module) && moduleName) {
|
|
26
|
-
acc[moduleName] = module()
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return acc
|
|
30
|
-
},
|
|
31
|
-
{}
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
const getSocketVersion = (version: string) => {
|
|
35
|
-
if (version in sockets) {
|
|
36
|
-
return sockets[version]
|
|
37
|
-
} else {
|
|
38
|
-
throw new Error(`Socket version ${version} not found`)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const makeSocketVersion = (version: string, ...args: Parameters<typeof io>) => {
|
|
43
|
-
const socket = getSocketVersion(version)
|
|
44
|
-
|
|
45
|
-
return socket(...args)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export default {
|
|
49
|
-
...sockets,
|
|
50
|
-
getSocketVersion,
|
|
51
|
-
makeSocketVersion
|
|
52
|
-
}
|