126 lines
4.1 KiB
C#
126 lines
4.1 KiB
C#
|
using Chat.Framework.PCRobotSDK;
|
|||
|
using Chat.Framework.WXSdk.Implement;
|
|||
|
using CsharpHttpHelper;
|
|||
|
using PCRobot.Pack;
|
|||
|
using SuperSocket.SocketBase;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Chat.Framework.WXSdk.HOOK
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 易转发包
|
|||
|
/// </summary>
|
|||
|
internal class WechatPack
|
|||
|
{
|
|||
|
WeixinBase client;
|
|||
|
|
|||
|
public WechatPack(WeixinBase client)
|
|||
|
{
|
|||
|
this.client = client;
|
|||
|
}
|
|||
|
|
|||
|
internal string SendServer(PCRobotCMD cmd, string message = "", WechatMsgType messageType = WechatMsgType.文本, string tousername = "")
|
|||
|
{
|
|||
|
if (robot != null)
|
|||
|
{
|
|||
|
string text = string.Empty;
|
|||
|
|
|||
|
var msg = new ServerWechatMsg()
|
|||
|
{
|
|||
|
Cmd = cmd,
|
|||
|
RobotType = client.WeixinType == WeixinType.QYHook微信 ? RobotType.客户端企业微信 : RobotType.客户端微信,
|
|||
|
RobotUsername = client.WeixinHao,
|
|||
|
RobotUsernick = string.Empty,
|
|||
|
ToMessage = message,
|
|||
|
ToMessageType = messageType,
|
|||
|
ToUsername = tousername,//string.IsNullOrWhiteSpace(groupid) ? tousername : groupid,
|
|||
|
Key = ChatClient.SocketPassword
|
|||
|
};
|
|||
|
//Console.WriteLine(groupid);
|
|||
|
var json = HttpHelper.ObjectToJson(msg);
|
|||
|
text = PackTool.CompressString(json);
|
|||
|
//var t = PackTool.DecompressString(text);
|
|||
|
|
|||
|
var need_send = $"{cmd} {text}\r\n";
|
|||
|
var falg = robot.TrySend(need_send);
|
|||
|
|
|||
|
LogHelper.GetSingleObj().Debug("", $"往客户端发送消息.: {json},状态=>{falg}");
|
|||
|
return msg.MsgId;
|
|||
|
}
|
|||
|
return string.Empty;
|
|||
|
}
|
|||
|
|
|||
|
private ServerWechatMsg NextSendData;
|
|||
|
internal void SetNextData(ServerWechatMsg nextData)
|
|||
|
{
|
|||
|
this.NextSendData = nextData;
|
|||
|
}
|
|||
|
|
|||
|
internal void SendNextData()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (robot != null)
|
|||
|
{
|
|||
|
NextSendData.Key = ChatClient.SocketPassword;
|
|||
|
NextSendData.RobotType = client.WeixinType == WeixinType.QYHook微信 ? RobotType.客户端企业微信 : RobotType.客户端微信;
|
|||
|
NextSendData.RobotUsername = client.WeixinHao;
|
|||
|
NextSendData.RobotUsernick = string.Empty;
|
|||
|
|
|||
|
var json = HttpHelper.ObjectToJson(NextSendData);
|
|||
|
var text = PackTool.CompressString(json);
|
|||
|
var need_send = $"{NextSendData.Cmd} {text}\r\n";
|
|||
|
Thread.Sleep(70);
|
|||
|
var flag = robot.TrySend(need_send);
|
|||
|
|
|||
|
|
|||
|
LogHelper.GetSingleObj().Debug("", $"往客户端发送消息: {json} @@@ {text},状态=>{flag}");
|
|||
|
//this.SendAll(this.NextSendData.cmd, false, this.NextSendData.data);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{ }
|
|||
|
}
|
|||
|
|
|||
|
#region SupperSocket 1.0
|
|||
|
//private SupperSocketSession _robot;
|
|||
|
//public SupperSocketSession robot
|
|||
|
//{
|
|||
|
// get
|
|||
|
// {
|
|||
|
// if (!string.IsNullOrWhiteSpace(client.WeixinHao))
|
|||
|
// {
|
|||
|
// var robotData = ChatClient.PCRobotPool.GetSession(client.WeixinHao);
|
|||
|
// if (robotData != null)
|
|||
|
// _robot = robotData;
|
|||
|
// }
|
|||
|
// return _robot;
|
|||
|
// }
|
|||
|
//}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region SupperSocket 2.0
|
|||
|
private AppSession _robot;
|
|||
|
public AppSession robot
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (!string.IsNullOrWhiteSpace(client.WeixinHao))
|
|||
|
{
|
|||
|
var robotData = ChatClient.PCRobotPool.GetSession(client.WeixinHao);
|
|||
|
if (robotData != null)
|
|||
|
_robot = robotData;
|
|||
|
}
|
|||
|
return _robot;
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
}
|