1.完善黑名单用户邀请好友申请处理

2.完善代运营
This commit is contained in:
老道 2023-02-01 14:18:07 +08:00
parent 18588f82e1
commit 6def41745a
2 changed files with 78 additions and 14 deletions

View File

@ -168,7 +168,17 @@ namespace MessageSupervises
private void SDK_WXApplyFriendEvent(object sender, Chat.Framework.WXSdk.Events.WXApplyFriend e) private void SDK_WXApplyFriendEvent(object sender, Chat.Framework.WXSdk.Events.WXApplyFriend e)
{ {
e.Cancel = _ForbidBlacklist(e.NewFriendWxid, e.NewFriendNick, $"申请添加好友", e.Client); var isCancel = _ForbidBlacklist(e.NewFriendWxid, e.NewFriendNick, $"申请添加好友", e.Client);
if (isCancel == false)
{
//查看邀请用户是否黑名单
if (!string.IsNullOrWhiteSpace(e.OldFriendWxid))
{
isCancel = _ForbidBlacklist(e.OldFriendWxid, e.OldFriendNick, $"邀请好友,申请添加", e.Client);
}
}
e.Cancel = isCancel;
} }
private void SDK_WXApplyGroupEvent(object sender, Chat.Framework.WXSdk.Events.WXApplyGroup e) private void SDK_WXApplyGroupEvent(object sender, Chat.Framework.WXSdk.Events.WXApplyGroup e)

View File

@ -7,6 +7,7 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using WebSocket = WebSocketSharp.WebSocket; using WebSocket = WebSocketSharp.WebSocket;
using CsharpHttpHelper; using CsharpHttpHelper;
using WebSocketSharp;
namespace Api.Framework namespace Api.Framework
{ {
@ -75,6 +76,8 @@ namespace Api.Framework
/// </summary> /// </summary>
public bool IsConnected => (_websocket != null && _websocket.IsAlive); public bool IsConnected => (_websocket != null && _websocket.IsAlive);
private string ClientId { get; set; } = Guid.NewGuid().ToString("N");
/// <summary> /// <summary>
/// 连接 /// 连接
/// </summary> /// </summary>
@ -87,19 +90,38 @@ namespace Api.Framework
_websocket?.Close(); _websocket?.Close();
} }
_websocket = new WebSocket($"ws://{this._host}/api/push?id={DateTime.Now.Ticks}"); _websocket = new WebSocket($"ws://{this._host}/api/push?id={ClientId}");
_websocket.OnOpen += _websocket_OnOpen; _websocket.OnOpen += _websocket_OnOpen;
_websocket.OnError += _websocket_OnError;
_websocket.OnClose += _websocket_OnClose;
_websocket.OnMessage += _websocket_OnMessage; _websocket.OnMessage += _websocket_OnMessage;
_websocket.Connect(); _websocket.Connect();
_pingId = Guid.NewGuid().ToString("N");
if (_thread == null)
{
_thread = new Thread(Ping) _thread = new Thread(Ping)
{ {
IsBackground = true IsBackground = true
}; };
_thread.Start(); _thread.Start();
} }
/// <summary>
/// 连接断开
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void _websocket_OnClose(object sender, CloseEventArgs e)
{
//断开自动重连
this.Connect();
}
/// <summary>
/// 出现连接错误
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void _websocket_OnError(object sender, ErrorEventArgs e)
{
//断开自动重连
this.Connect();
} }
/// <summary> /// <summary>
@ -153,18 +175,50 @@ namespace Api.Framework
Console.WriteLine($"即时通讯API连接异常:{ex.Message}"); Console.WriteLine($"即时通讯API连接异常:{ex.Message}");
} }
} }
private int PingFailureCount { get; set; }
private string _pingId = Guid.NewGuid().ToString();
private void Ping() private void Ping()
{ {
while (true) var id = Guid.NewGuid().ToString();
_pingId = id;
while (_pingId == id)
{ {
Thread.Sleep(1000 * 10); Thread.Sleep(1000 * 10);
try try
{ {
//测试ping是否正常 //测试ping是否正常
if (this._websocket.Ping()) continue; try
{
if (_websocket == null)
{
continue;
}
if (_websocket.ReadyState == WebSocketState.Open)
{
_websocket.Send("\u0001\u0002");
this.PingFailureCount = 0;
}
else
{
this.PingFailureCount = this.PingFailureCount + 1;
}
}
catch
{
// ignored
this.PingFailureCount = this.PingFailureCount + 1;
}
finally
{
if (this.PingFailureCount > 5)
{
Console.WriteLine("心跳异常连接断开");
_websocket?.Close();
}
}
//断开自动重连
this.Connect();
} }
catch (Exception e) catch (Exception e)
{ {