/// <summary> /// 新消息 /// </summary> /// <param name="e"></param> protected override void OnMessage(WebSocketSharp.MessageEventArgs e) { try { LastRecvTime = DateTime.Now; if (e.IsText) { switch (e.Data) { case "HeartBeat": this.Send(Newtonsoft.Json.JsonConvert.SerializeObject(new WSResModel(ResCode.HeartBeatRes))); return; case "TaskIsExist": if (HandlerTaskManager.ContainsTask(this.TaskId)) { this.Send(Newtonsoft.Json.JsonConvert.SerializeObject(new WSResModel(ResCode.Wait))); } else { SendAndClose(new WSResModel(ResCode.Err, "任务不存在!")); } return; } } BaseHandler handler = HandlerManager.CreateHandler(PathName); if (handler == null) { SendAndClose(new WSResModel(ResCode.Err, string.Format("请求路径{0}未找到对应Handler", PathName))); return; } handler.Path = this.PathName; handler.TaskId = this.TaskId; handler.ReqIsWebSocket = true; handler.InPara = e.Data; //添加任务并执行 if (HandlerTaskManager.AddTask(handler)) { ThreadPool.QueueUserWorkItem((state) => { BaseHandler bh = state as BaseHandler; try { bh.HandlerTask(bh.InPara); } catch (Exception ex) { bh.ReturnToClient(new WSResModel(ResCode.Err, ex.Message)); } }, handler); } } catch (Exception ex) { CommonInfo.Output("WS处理消息异常:{0}", ex.Message); SendAndClose(new WSResModel(ResCode.Err, string.Format("服务器WS处理消息异常", ex.Message))); } }