public void DelayDo(Fix64 time, DoCallBack callback) { if (time <= (Fix64)0) { m_Enable = true; m_FixElapseTime = (Fix64)0.02; m_FixPlanTime = (Fix64)0.02; m_DoCallBack = callback; } else { m_Enable = true; m_FixElapseTime = Fix64.Zero; m_FixPlanTime = time; m_DoCallBack = callback; } }
public static void Init(string Url, DoCallBack _callBack, DoMessage _doMessage, DoShowInfo _doShowInfo) { FleckLog.Level = LogLevel.Debug; _DoCallBack = _callBack; _DoMessage = _doMessage; _DoShowInfo = _doShowInfo; //var allSockets = new List<IWebSocketConnection>(); //var server = new WebSocketServer("ws://0.0.0.0:4696"); var server = new WebSocketServer(Url); server.Start(socket => { socket.OnOpen = () => { ShowInfo("Open!"); //allSockets.Add(socket); string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort; string deviceMachineCode = ""; string deviceKey = ""; try { //从headers得到机器码 deviceMachineCode = socket.ConnectionInfo.Headers["deviceMachineCode"]; deviceKey = socket.ConnectionInfo.Headers["deviceKey"]; } catch { } ShowInfo("与客户端:" + clientUrl + " 建立WebSock连接!"); ShowInfo("请求deviceKey:" + deviceKey); //判断是否可以接入 if (!string.IsNullOrEmpty(deviceKey)) { bool isOk = ValidDevices.Keys.Contains(deviceKey); ShowInfo(string.Format("设备[{0}]请求接入,结果[{1}]", deviceKey, isOk)); if (isOk) { if (dic_Sockets.Keys.Contains(deviceKey)) { dic_Sockets[deviceKey] = socket; } else { dic_Sockets.Add(deviceKey, socket); } return; } } else { ShowInfo(string.Format("{0}|服务器:请求接入失败,原因:未传入DeviceKey", DateTime.Now.ToString())); } //如果不是有效的设备,则断开 socket.Close(); }; socket.OnError = (Exception ex) => { ShowInfo("OnError!" + ex.ToString()); //allSockets.Remove(socket); }; socket.OnClose = () => { ShowInfo("Close!"); //allSockets.Remove(socket); }; socket.OnMessage = message => { ShowInfo("socket.OnMessage:" + message); try { MModel_Ws.ResultInfo resultInfo = JsonConvert.DeserializeObject <MModel_Ws.ResultInfo>(message); string taskName = resultInfo.taskname; //得到请求后的返回处理 if (MessageList.Keys.Contains(taskName)) { DoCallBack callBack = MessageList[taskName]; if (callBack != null) { callBack.Invoke(resultInfo); return; } } TaskInfo taskInfo = JsonConvert.DeserializeObject <TaskInfo>(message); //如果在请求回调列表中没有找到,则处理“接收” _DoMessage?.Invoke(socket, taskInfo); } catch (Exception ex) { ShowInfo(ex.Message); } }; socket.OnPing = (byte[] ex) => { ShowInfo("OnPing!" + System.Text.Encoding.Default.GetString(ex)); socket.SendPong(ex); }; }); //var input = Console.ReadLine(); //while (input != "exit") //{ // foreach (var socket in dic_Sockets.Values) // { // socket.Send(input); // } // input = Console.ReadLine(); //} }