コード例 #1
0
ファイル: Subscriber.cs プロジェクト: jshailin/sod
 /// <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("");
     }
 }
コード例 #2
0
ファイル: Subscriber.cs プロジェクト: jshailin/sod
        /// <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("");
            }
        }
コード例 #3
0
ファイル: Subscriber.cs プロジェクト: jshailin/sod
        /// <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);
        }