public void Send(string channelName, int ContractID, Dictionary <string, string> sendParams, Action <object> callback = null, bool loadMask = true) { var channel = this.Channels[channelName]; var body = CreateBody(sendParams); var signStr = channel.Pipeline.ClientID + channel.Pipeline.SessionID + ContractID + body.Length.ToString(); var sign = GetCrypt(channel.Options.key).EncryptECB(signStr); var message = MessageFactory.Create(channel.Pipeline.ClientID, channel.Pipeline.SessionID, ContractID, sign, body) as RequestMessagePacket; if (callback != null) { var action = ActionFactory.CreateAction.Invoke(channelName, ContractID); action.Params = sendParams; action.Callback = callback; this.SendActions.Add(message.MessageID, action); } if (this.SendCallBack != null) { //当前不一定是主线程,,得添加到loom中 //loom是在update内执行(不是立即)。。确保这里是顺序执行 Loom.QueueOnMainThread(() => { SendCallBack.Invoke(channel.Pipeline, message, loadMask); channel.Pipeline.WriteAndFlushAsync(message); }); } else { channel.Pipeline.WriteAndFlushAsync(message); } }
/// <summary> /// 延迟发送 /// </summary> /// <param name="r">是否随机延迟</param> /// <param name="s">随机开始</param> /// <param name="e">随机结束</param> /// <param name="c">命令</param> public DelaySend(int hwnd, bool r, int s, int e, string c, SendCallBack prevFunc, SendCallBack lastFunc) { this.random = r; this.s = s; this.e = e; this.cmd = c; this.hwnd = hwnd; this.prevFunc = prevFunc; this.lastFunc = lastFunc; }
public ReliableRequest(int command, float time, byte[] data, EndPoint e, SendCallBack sendCb, CallBack cb) { this.command = command; this.sendCb = sendCb; this.cb = cb; this.time = time; oldTime = DateTime.Now.Millisecond; this.data = data; this.e = e; }
/// <summary> /// 向客户端发送数据 /// </summary> public void SendData(object msg) { var data = this.Encoding.GetBytes((string)msg); try { _client.Send(data); SendCallBack?.Invoke(TheEndPoint); } catch { } }
public SQEle(byte[] data, SendCallBack callBack) { this.data = data; this.callBack = callBack; }