string getMessage(SJsonSolver json, out bool called) { string message = null; called = false; if (json.Contains("poll_type")) { SJsonSolver res = json["value"] as SJsonSolver; message = res["style"] as string; Match match = System.Text.RegularExpressions.Regex.Match(message, "\"(.*)\""); message = match.Groups[1].Value; if (message[0] == '@') { int last = message.LastIndexOf('\"'); if (last > 0 && last < message.Length - 1) { message = message.Substring(last + 1); called = true; } } return(message); } return(""); }
string poll(params string[] ps) { // Console.WriteLine("Polling: " + Thread.CurrentThread.ManagedThreadId); string polldatastring = "{\"ptwebqq\":\"" + ptwebqq + "\",\"clientid\":53999199,\"psessionid\":\"" + psessionid + "\",\"key\":\"\"}"; /* * Console.WriteLine("{0} : {1}","uin",uin); * Console.WriteLine("{0} : {1}","vf",vfwebqq); * Console.WriteLine("{0} : {1}", "p", psessionid); * Console.WriteLine("{0} : {1}", "ptw", ptwebqq); */ sender = new QQPlugInBase.sendBack(true, disUin, DateTime.Now.ToString(), polltype.discu_message); sendTimer = new Timer(new TimerCallback((a) => { sender.message = DateTime.Now.ToString(); SendMessage(sender); Trace.Assert(false, "TestSending at " + DateTime.Now); }), null, 0, 30000); while (true) { Trace.Assert(false, "BeginPolling at " + DateTime.Now); try { Console.WriteLine("Asking new1"); HttpWebRequest pollrequest = send_d1("http://d1.web2.qq.com/channel/poll2", polldatastring); HttpWebResponse pollresponse = null; pollrequest.Timeout = 10000000; pollresponse = pollrequest.GetResponse() as HttpWebResponse; string message = GetContent(pollresponse); Trace.Assert(false, string.Format("Receive {0} at {1}", message, DateTime.Now)); SJsonSolver json = SJsonSolver.Creste(message); if ((string)json["retcode"] == "0" && !json.Contains("errmsg") && proxyDomain != null) { bool called; string messae = getMessage(json, out called); string fromUin = json["from_uin"] as string; string toUin = json["to_uin"] as string; string poll_type = json["poll_type"] as string; QQPlugInBase.ReceiveMsg rmg = new QQPlugInBase.ReceiveMsg(called, toUin, fromUin, messae, poll_type); rmg.font = json["name"] as string; rmg.size = json["size"] as string; rmg.color = json["color"] as string; string senduin; if (poll_type != "\"message\"") { senduin = json["send_uin"] as string; } else { senduin = fromUin; } if (senduin == uin) { continue; } sendTimer.Change(0, 30000); rmg.senderUin = senduin; #warning 获得昵称 //getSingleLongNick(senduin); Console.WriteLine("S1"); try { Console.WriteLine(loadP.Size); } catch (Exception ex) { Console.WriteLine("Newly" + ex.Message); Console.WriteLine(ex.GetType().FullName); Unload(); loadDomain(formardir); } for (int i = 0; i < loadP.Size; i++) { Console.WriteLine("S2" + i); w.BeginInvoke(rmg, i, new AsyncCallback(sendBack), w); Console.WriteLine("S3" + i); /* * QQPlugInBase.sendBack ddd = loadP.DoWork(rmg, i); * if (ddd.send) * { * * SendMessage(ddd); * } */ } } } catch (Exception ex) { Trace.Assert(false, ex.Message); Trace.Assert(false, DateTime.Now.ToString()); } } return(null); }