/// <summary> /// 服务回调客户端,获取客户端返回的消息 /// </summary> /// <param name="id">消息编号</param> /// <param name="para">消息参数</param> /// <returns></returns> public string CallBackMessage(int id, string para) { if (DictFunction.ContainsKey(id) && DictFunction[id] != null) { return(DictFunction[id](para)); } else { return(""); } }
/// <summary> /// 预先回调客户端,获取客户端返回的消息。可以在 CallBackMessage 执行之前进行预先的调用,以决定下面的操作 /// </summary> /// <param name="id">消息编号</param> /// <param name="para">消息参数</param> /// <returns></returns> public string PreCallBackMessage(int id, string para) { int preId = int.MaxValue - id; if (DictFunction.ContainsKey(preId) && DictFunction[preId] != null) { return(DictFunction[preId](para)); } else { return(""); } }
/// <summary> /// 向服务器发送消息,当服务器处理完后,会回调当前提供的回调方法 /// </summary> /// <param name="message">发给服务器的消息</param> /// <param name="ResultType">结果的对象类型</param> /// <param name="action">客户端的回调方法</param> /// <param name="function">在执行过程中回调的客户端函数</param> /// <param name="previewFunction">在执行过程前预先回调的客户端函数</param> /// <returns>消息标识</returns> public int SendMessage(string message, Type ResultType, Action <string> action, MyFunc <string, string> function, MyFunc <string, string> previewFunction) { _receivedMessage = ""; if (this.Closed) { OnErrorMessage("通信连接已经关闭。"); return(0); } try { int messageId = this.CreateMessageID(); _dictAction.Add(messageId, action); _dictResultType.Add(messageId, ResultType); if (function != null) { DictFunction.Add(messageId, function); } if (previewFunction != null) { DictFunction.Add(int.MaxValue - messageId, previewFunction); } _serviceProxy.OnAccept(messageId, message); //服务端接受消息后,可能要等段时间才会回调OnReceivingMessage 方法,这里传入要处理的方法委托 _currAction = action; _waitCallbacking = true; this._closedFlag = 1;//允许回调完成,监听器取消注册。 return(messageId); } catch (Exception ex) { OnErrorMessage(string.Format("SendTextMessage Error,msg:{0},ErrorMessage:{1}", message, ex.Message)); } return(0); }