karin-plugin-teamspeak 1.5.3 → 1.5.5
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/lib/apps/ts3.d.ts +3 -0
- package/lib/apps/ts3.js +26 -24
- package/package.json +1 -1
package/lib/apps/ts3.d.ts
CHANGED
|
@@ -2,13 +2,16 @@ import { TeamSpeak } from "ts3-nodejs-library";
|
|
|
2
2
|
declare class ts3 {
|
|
3
3
|
teamspeak: undefined | TeamSpeak;
|
|
4
4
|
connectTimer: number;
|
|
5
|
+
private isReConnecting;
|
|
5
6
|
init: () => Promise<void>;
|
|
6
7
|
getAllChannelList: () => Promise<string | undefined>;
|
|
7
8
|
quitTs: () => Promise<void>;
|
|
8
9
|
reconnectTs: () => Promise<void>;
|
|
10
|
+
private handelReconnect;
|
|
9
11
|
}
|
|
10
12
|
declare const teamspeak3: ts3;
|
|
11
13
|
export declare const getAllUserList: () => Promise<{
|
|
14
|
+
name: string;
|
|
12
15
|
res: {
|
|
13
16
|
[name: string]: {
|
|
14
17
|
nickName: string;
|
package/lib/apps/ts3.js
CHANGED
|
@@ -9,10 +9,11 @@ let disNotifyNameList = [];
|
|
|
9
9
|
class ts3 {
|
|
10
10
|
teamspeak;
|
|
11
11
|
connectTimer = 0;
|
|
12
|
+
isReConnecting = false;
|
|
12
13
|
//初始化 如果已经有连接了就关闭连接重新连接
|
|
13
14
|
init = async () => {
|
|
14
15
|
const TS = config();
|
|
15
|
-
|
|
16
|
+
this.isReConnecting = false;
|
|
16
17
|
disNotifyNameList = [TS.NICKNAME, ...TS.DIS_NOTIFY_NAME_LIST];
|
|
17
18
|
logger.info(loggerHex(" ===== ts3 ===== ") + "开始连接ts3服务器...");
|
|
18
19
|
if (this.teamspeak) {
|
|
@@ -34,31 +35,11 @@ class ts3 {
|
|
|
34
35
|
});
|
|
35
36
|
_teamspeak.on("close", (e) => {
|
|
36
37
|
logger.error(loggerHex(" ===== ts3 ===== ") + "ts3连接断开", e);
|
|
37
|
-
|
|
38
|
-
logger.info(loggerHex(" ===== ts3 ===== ") + "重连中...");
|
|
39
|
-
this.teamspeak
|
|
40
|
-
.reconnect(TS.RECONNECT_TIMER, 1000)
|
|
41
|
-
.catch((e) => {
|
|
42
|
-
logger.error(loggerHex(" ===== ts3 ===== ") + "连接TS3失败", e);
|
|
43
|
-
})
|
|
44
|
-
.then(() => {
|
|
45
|
-
logger.info(loggerHex(" ===== ts3 ===== ") + "重连成功");
|
|
46
|
-
});
|
|
47
|
-
}
|
|
38
|
+
this.handelReconnect();
|
|
48
39
|
});
|
|
49
40
|
_teamspeak.on("error", (err) => {
|
|
50
41
|
logger.error(loggerHex(" ===== ts3 ===== ") + "ts3连接出错", err);
|
|
51
|
-
|
|
52
|
-
logger.info(loggerHex(" ===== ts3 ===== ") + "重连中...");
|
|
53
|
-
this.teamspeak
|
|
54
|
-
.reconnect(TS.RECONNECT_TIMER, 1000)
|
|
55
|
-
.catch((e) => {
|
|
56
|
-
logger.error(loggerHex(" ===== ts3 ===== ") + "连接TS3失败", e);
|
|
57
|
-
})
|
|
58
|
-
.then(() => {
|
|
59
|
-
logger.info(loggerHex(" ===== ts3 ===== ") + "重连成功");
|
|
60
|
-
});
|
|
61
|
-
}
|
|
42
|
+
this.handelReconnect();
|
|
62
43
|
});
|
|
63
44
|
_teamspeak.on("clientconnect", (e) => {
|
|
64
45
|
if (!disNotifyNameList.includes(e.client.nickname)) {
|
|
@@ -152,6 +133,24 @@ class ts3 {
|
|
|
152
133
|
this.teamspeak.reconnect(config().RECONNECT_TIMER, 1000);
|
|
153
134
|
}
|
|
154
135
|
};
|
|
136
|
+
//重连逻辑
|
|
137
|
+
async handelReconnect() {
|
|
138
|
+
const TS = config();
|
|
139
|
+
if (!this.teamspeak || this.isReConnecting)
|
|
140
|
+
return;
|
|
141
|
+
this.isReConnecting = true;
|
|
142
|
+
logger.info(loggerHex(" ===== ts3 ===== ") + "重连中...");
|
|
143
|
+
try {
|
|
144
|
+
await this.teamspeak.reconnect(TS.RECONNECT_TIMER, 1000);
|
|
145
|
+
logger.info(loggerHex(" ===== ts3 ===== ") + "重连成功");
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
logger.error(loggerHex(" ===== ts3 ===== ") + "连接TS3失败", e);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
this.isReConnecting = false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
155
154
|
}
|
|
156
155
|
const teamspeak3 = new ts3();
|
|
157
156
|
setTimeout(() => {
|
|
@@ -163,7 +162,9 @@ export const getAllUserList = async () => {
|
|
|
163
162
|
if (teamspeak3.teamspeak) {
|
|
164
163
|
let count = 0;
|
|
165
164
|
const res = {};
|
|
166
|
-
const channelList = await teamspeak3.teamspeak.channelList()
|
|
165
|
+
const channelList = await teamspeak3.teamspeak.channelList().catch(() => {
|
|
166
|
+
return [];
|
|
167
|
+
}); //所有频道
|
|
167
168
|
for (let index = 0; index < channelList.length; index++) {
|
|
168
169
|
const channel = channelList[index]; //频道
|
|
169
170
|
const allClient = await channel.getClients(); //在当前频道的人
|
|
@@ -183,6 +184,7 @@ export const getAllUserList = async () => {
|
|
|
183
184
|
});
|
|
184
185
|
}
|
|
185
186
|
return {
|
|
187
|
+
name: config().SERVER_NAME || config().HOST,
|
|
186
188
|
res,
|
|
187
189
|
count,
|
|
188
190
|
};
|