XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension

【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension

增加超时判定

1bef1f1
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

1 个文件 +25 -10
Modified XFE各类拓展/CyberComm.cs +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 {