private bool GetNecessaryParam(string html, string cookie) { HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); var node = doc.DocumentNode.SelectSingleNode("/html/head/script[10]/text()"); if (node == null) { return(false); } //拿到主界面的token和id Regex regex = new Regex("tk\":\"(.*)\",\"no\":(.*)},.*(?<=ID)\"(.*)\"(?=Name)"); var mc = regex.Match(html); string token = mc.Groups[1].Value; string rid = mc.Groups[2].Value; string id = mc.Groups[3].Value.Replace(":", "").Replace(",", ""); SocketInitDto = new SocketInitDto() { Id = id, Rid = rid, LocalUrl = localUrl, Token = token, Cookie = cookie }; if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(rid) || string.IsNullOrEmpty(id)) { logger.Error("Cannot parse param. html = " + html); return(false); } return(true); }
public void Init(SocketInitDto dto) { socket = new WebSocketSharp.WebSocket(dto.WssUrl); socket.WaitTime = new TimeSpan(0, 0, 0, timeOut); socket.Origin = dto.LocalUrl; socket.OnMessage += Socket_OnMessage; socket.OnError += Socket_OnError; socket.OnClose += Socket_OnClose; checkTimer = new Timer(); checkTimer.Interval = 25 * 1000; checkTimer.AutoReset = true; checkTimer.Elapsed += HeartCheck; }