/// <summary> /// FastWebSocket的客户端对象 /// </summary> /// <param name="packetIdProvider"></param> /// <param name="taskSetActionTable"></param> /// <param name="jsonSerializer"></param> /// <param name="filterAttributeProvider"></param> internal FastWebSocketSession(PacketIdProvider packetIdProvider, TaskSetActionTable taskSetActionTable, IJsonSerializer jsonSerializer, IFilterAttributeProvider filterAttributeProvider) { this.packetIdProvider = packetIdProvider; this.taskSetActionTable = taskSetActionTable; this.JsonSerializer = jsonSerializer; this.FilterAttributeProvider = filterAttributeProvider; }
/// <summary> /// 快速构建WebSocket服务端 /// </summary> public FastWebSocketServer() { this.apiActionList = new ApiActionList(); this.packetIdProvider = new PacketIdProvider(); this.taskSetActionTable = new TaskSetActionTable(); this.JsonSerializer = new DefaultJsonSerializer(); this.FilterAttributeProvider = new FilterAttributeProvider(); }
/// <summary> /// 设置Api行为返回的任务结果 /// </summary> /// <param name="requestContext">上下文</param> /// <param name="taskSetActionTable">任务行为表</param> public static void SetApiActionTaskResult(RequestContext requestContext, TaskSetActionTable taskSetActionTable) { var taskSetAction = taskSetActionTable.Take(requestContext.Packet.id); if (taskSetAction != null) { var returnValue = requestContext.Packet.body; taskSetAction.SetAction(SetTypes.SetReturnReult, returnValue); } }
/// <summary> /// 设置Api行为返回的任务结果 /// </summary> /// <param name="requestContext">上下文</param> /// <param name="taskSetActionTable">任务行为表</param> public static void SetApiActionTaskResult(RequestContext requestContext, TaskSetActionTable taskSetActionTable) { var taskSetAction = taskSetActionTable.Take(requestContext.Packet.id); if (taskSetAction != null) { var returnValue = (object)requestContext.Packet.body; taskSetAction.SetAction(SetTypes.SetReturnReult, returnValue); } }
/// <summary> /// 设置Api行为返回的任务异常 /// 设置失败则返远程异常对象 /// </summary> /// <param name="taskSetActionTable">任务行为表</param> /// <param name="requestContext">请求上下文</param> /// <returns></returns> public static RemoteException SetApiActionTaskException(TaskSetActionTable taskSetActionTable, RequestContext requestContext) { string message = JObject.TryCast <string>(requestContext.Packet.body); var taskSetAction = taskSetActionTable.Take(requestContext.Packet.id); if (taskSetAction != null) { taskSetAction.SetAction(SetTypes.SetReturnException, message); return(null); } return(new RemoteException(message)); }
/// <summary> /// 设置Api行为返回的任务异常 /// 设置失败则返远程异常对象 /// </summary> /// <param name="taskSetActionTable">任务行为表</param> /// <param name="requestContext">请求上下文</param> /// <returns></returns> public static RemoteException SetApiActionTaskException(TaskSetActionTable taskSetActionTable, RequestContext requestContext) { string message = JObject.TryCast<string>(requestContext.Packet.body); var taskSetAction = taskSetActionTable.Take(requestContext.Packet.id); if (taskSetAction != null) { taskSetAction.SetAction(SetTypes.SetReturnException, message); return null; } return new RemoteException(message); }
/// <summary> /// 释放资源 /// </summary> /// <param name="disposing">是否也释放托管资源</param> protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { this.apiActionList = null; this.taskSetActionTable.Clear(); this.taskSetActionTable = null; this.packetIdProvider = null; this.JsonSerializer = null; this.FilterAttributeProvider = null; } }