XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFE各类拓展/CyberComm.cs
+25
-10
XFEstudio/XFEExtension
增加超时判定
1bef1f1
代码差异
1 个文件
+25
-10
@@ -1130,7 +1130,7 @@ namespace XFE各类拓展.CyberComm
1130
1130
messageType = XCCBinaryMessageType.Audio;
1131
1131
break;
1132
1132
case "callback":
1133
UpdateTaskTrigger.Invoke(true, messageId);
1133
UpdateTaskTrigger?.Invoke(true, messageId);
1134
1134
continue;
1135
1135
default:
1136
1136
messageType = XCCBinaryMessageType.Binary;
@@ -1174,11 +1174,12 @@ namespace XFE各类拓展.CyberComm
1174
1174
/// 发送文本消息,返回消息ID
1175
1175
/// </summary>
1176
1176
/// <param name="message">待发送的文本</param>
1177
/// <param name="timeout">最长超时时长</param>
1177
1178
/// <returns>消息ID</returns>
1178
public async Task<string> SendTextMessage(string message)
1179
public async Task<string> SendTextMessage(string message, int timeout = 10000)
1179
1180
{
1180
1181
var messageId = Guid.NewGuid().ToString();
1181
await SendTextMessage(message, messageId);
1182
await SendTextMessage(message, messageId, timeout);
1182
1183
return messageId;
1183
1184
}
1184
1185
/// <summary>
@@ -1186,14 +1187,20 @@ namespace XFE各类拓展.CyberComm
1186
1187
/// </summary>
1187
1188
/// <param name="message">待发送的文本</param>
1188
1189
/// <param name="messageId">消息ID</param>
1190
/// <param name="timeout">最长超时时长</param>
1189
1191
/// <exception cref="XFECyberCommException"></exception>
1190
1192
/// <returns>服务器接收校验等待</returns>
1191
public async Task SendTextMessage(string message, string messageId)
1193
public async Task SendTextMessage(string message, string messageId, int timeout)
1192
1194
{
1193
1195
try
1194
1196
{
1195
1197
byte[] sendBuffer = Encoding.UTF8.GetBytes(new string[] { messageId, message }.ToXFEString());
1196
1198
await ClientWebSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None);
1199
var endTask = Task.Run(() =>
1200
{
1201
Task.Delay(timeout);
1202
UpdateTaskTrigger?.Invoke(false, messageId);
1203
});
1197
1204
await new XFEWaitTask<bool>(ref UpdateTaskTrigger, messageId);
1198
1205
}
1199
1206
catch (Exception ex)
@@ -1225,11 +1232,12 @@ namespace XFE各类拓展.CyberComm
1225
1232
/// </summary>
1226
1233
/// <param name="message">二进制消息</param>
1227
1234
/// <param name="signature">签名标识</param>
1235
/// <param name="timeout">最长超时时长</param>
1228
1236
/// <returns></returns>
1229
public async Task<string> SendSignedBinaryMessage(byte[] message, string signature)
1237
public async Task<string> SendSignedBinaryMessage(byte[] message, string signature, int timeout = 10000)
1230
1238
{
1231
1239
var messageId = Guid.NewGuid().ToString();
1232
await SendSignedBinaryMessage(message, messageId, signature);
1240
await SendSignedBinaryMessage(message, messageId, signature, timeout);
1233
1241
return messageId;
1234
1242
}
1235
1243
/// <summary>
@@ -1238,14 +1246,20 @@ namespace XFE各类拓展.CyberComm
1238
1246
/// <param name="message">二进制消息</param>
1239
1247
/// <param name="messageId">消息ID</param>
1240
1248
/// <param name="signature">签名标识</param>
1249
/// <param name="timeout">最长超时时长</param>
1241
1250
/// <returns>服务器接收校验等待</returns>
1242
1251
/// <exception cref="XFECyberCommException"></exception>
1243
public async Task SendSignedBinaryMessage(byte[] message, string messageId, string signature)
1252
public async Task SendSignedBinaryMessage(byte[] message, string messageId, string signature, int timeout)
1244
1253
{
1245
1254
try
1246
1255
{
1247
1256
var xFEBuffer = new XFEBuffer(Sender, message, "Type", Encoding.UTF8.GetBytes(signature), "ID", Encoding.UTF8.GetBytes(messageId));
1248
1257
await ClientWebSocket.SendAsync(new ArraySegment<byte>(xFEBuffer.ToBuffer()), WebSocketMessageType.Binary, true, CancellationToken.None);
1258
var endTask = Task.Run(() =>
1259
{
1260
Task.Delay(timeout);
1261
UpdateTaskTrigger?.Invoke(false, messageId);
1262
});
1249
1263
await new XFEWaitTask<bool>(ref UpdateTaskTrigger, messageId);
1250
1264
}
1251
1265
catch (Exception ex)
@@ -1274,13 +1288,14 @@ namespace XFE各类拓展.CyberComm
1274
1288
/// 发送默认标准的二进制消息
1275
1289
/// </summary>
1276
1290
/// <param name="message">待发送的二进制数据</param>
1291
/// <param name="timeout">最长超时时长</param>
1277
1292
/// <exception cref="XFECyberCommException"></exception>
1278
1293
/// <returns>消息ID</returns>
1279
public async Task<string> SendBinaryMessage(byte[] message)
1294
public async Task<string> SendBinaryMessage(byte[] message, int timeout = 1000)
1280
1295
{
1281
1296
try
1282
1297
{
1283
return await SendSignedBinaryMessage(message, "binary");
1298
return await SendSignedBinaryMessage(message, "binary", timeout);
1284
1299
}
1285
1300
catch (Exception ex)
1286
1301
{
@@ -1297,7 +1312,7 @@ namespace XFE各类拓展.CyberComm
1297
1312
{
1298
1313
try
1299
1314
{
1300
return await SendSignedBinaryMessage(File.ReadAllBytes(filePath), "image");
1315
return await SendSignedBinaryMessage(File.ReadAllBytes(filePath), "image", 30000);
1301
1316
}
1302
1317
catch (Exception ex)
1303
1318
{