Exemplo n.º 1
0
            private bool _SetSseHeader(CoCNotifyHost host, string head)
            {
                try
                {
                    host.Response.ContentEncoding = Encoding.UTF8;
                    host.Response.AddHeader("Cache-Control", "no-cache");
                    host.Response.AddHeader("Access-Control-Allow-Origin", "*");
                    host.Response.AddHeader("X-Accel-Buffering", "no");
                    host.Response.KeepAlive   = true;
                    host.Response.ContentType = head;
                    host.Response.StatusCode  = (int)HttpStatusCode.OK;
                    return(true);
                }
#if DEBUG
                catch (Exception e)
                {
                    if (this._parent.isLogEnable)
                    {
                        this._parent._ilog.LogError(
                            string.Format(
                                Properties.Resources.CoCNotifyProcessError,
                                Properties.Resources.CoCNotifySetHeader,
                                host.IpAddress,
                                e.Message
                                )
                            );
                    }
#else
                catch (Exception)
                {
#endif
                    return(false);
                }
            }
Exemplo n.º 2
0
            private bool _SendPartSse(CoCNotifyHost host, string msg)
            {
                try
                {
                    if (host.Response.OutputStream == null)
                    {
                        throw new ArgumentException();
                    }
                    byte [] bmsg = Encoding.UTF8.GetBytes(msg);
                    host.Response.OutputStream.Write(bmsg, 0, bmsg.Length);
                    host.Response.OutputStream.Flush();
                    return(true);
                }
#if DEBUG
                catch (Exception e)
                {
                    if (this._parent.isLogEnable)
                    {
                        this._parent._ilog.LogError(
                            string.Format(
                                Properties.Resources.CoCNotifyProcessError,
                                Properties.Resources.CoCNotifySendPart,
                                host.IpAddress,
                                e.Message
                                )
                            );
                    }
#else
                catch (Exception)
                {
#endif
                    return(false);
                }
            }
Exemplo n.º 3
0
 public bool SendSseStreamComplette(CoCNotifyHost host, string evname, string evdata)
 {
     if (!this._SetSseHeader(host, HttpUtil.GetMimeType("", HttpUtil.MimeType.MimeSse)))
     {
         return(false);
     }
     return(this._SendPartSse(host, this._EventSseToString(evname, evdata, this.getEventId)));
 }
Exemplo n.º 4
0
 public bool SendRssCompletteStatic(CoCNotifyHost host)
 {
     if (!this._SetSseHeader(host, HttpUtil.GetMimeType("", HttpUtil.MimeType.MimeXml)))
     {
         return(false);
     }
     return(this._SendPartSse(host, this._rssString));
 }
Exemplo n.º 5
0
 public bool SendJsonComplette(CoCNotifyHost host, bool isfull)
 {
     if (!this._SetSseHeader(host, HttpUtil.GetMimeType("", HttpUtil.MimeType.MimeJson)))
     {
         return(false);
     }
     return(this._SendPartSse(host, this._data.ToJson(isfull, false, (this._parent.UpdateNextMilliseconds + 35000))));
 }
Exemplo n.º 6
0
            private string _EventRssToString(CoCNotifyHost host)
            {
                int count = 0;

                stRSS.RSSWriter rssRoot = null;
                CultureInfo     ci      = stNet.stWebServerUtil.HttpUtil.GetHttpClientLanguage(host.Language, this._parent._ci);

                try
                {
                    if ((rssRoot = this._RssRootAdd(ci)) == null)
                    {
                        throw new ArgumentNullException();
                    }
                    foreach (DataRow row in this._data.Rows)
                    {
                        RSSFeedItem itm = this._RssItemAdd(row, (count++), ci);
                        if (itm != null)
                        {
                            rssRoot.Add(itm);
                        }
                    }
                    return(rssRoot.WriteString(this._parent._ilog));
                }
#if DEBUG
                catch (Exception e)
                {
                    if (this._parent.isLogEnable)
                    {
                        this._parent._ilog.LogError(
                            string.Format(
                                Properties.Resources.CoCNotifyProcessError,
                                Properties.Resources.CoCNotifyDataRss,
                                Properties.Resources.CoCNotifyDataOtherError,
                                e.Message
                                )
                            );
                    }
#else
                catch (Exception)
                {
#endif
                }
                return(this._rssString);
            }
Exemplo n.º 7
0
            private bool _DataSseSend(CoCNotifyHost host)
            {
                if (this._data.Rows.Count == 0)
                {
                    if (!this.SendSseStreamAlive(host))
                    {
                        return(false);
                    }
                    return(true);
                }
                try
                {
                    foreach (DataRow row in this._data.Rows)
                    {
                        if (!this._SendPartSse(host, this._EventSseToString((string)row["id"], row.ToJson())))
                        {
                            return(false);
                        }
                    }
                }
#if DEBUG
                catch (Exception e)
                {
                    if (this._parent.isLogEnable)
                    {
                        this._parent._ilog.LogError(
                            string.Format(
                                Properties.Resources.CoCNotifyProcessError,
                                Properties.Resources.CoCNotifyDataSseSend,
                                host.IpAddress,
                                e.Message
                                )
                            );
                    }
#else
                catch (Exception)
                {
#endif
                }
                return(true);
            }
Exemplo n.º 8
0
 public bool SendRssComplette(CoCNotifyHost host)
 {
     if (!this._SetSseHeader(host, HttpUtil.GetMimeType("", HttpUtil.MimeType.MimeXml)))
     {
         return(false);
     }
     if (string.IsNullOrEmpty(host.Language))
     {
         return(this._SendPartSse(host, this._rssString));
     }
     else
     {
         string rssString = this._EventRssToString(host);
         return(this._SendPartSse(
                    host,
                    ((string.IsNullOrWhiteSpace(rssString)) ?
                     CoCEnum.EventNotify.ServerError.ToString() :
                     rssString
                    )
                    ));
     }
 }
Exemplo n.º 9
0
            public void AddSseHost(CoCNotifyHost host)
            {
                if (host == null)
                {
                    return;
                }
                if (
                    (!this._SetSseHeader(host, HttpUtil.GetMimeType("", HttpUtil.MimeType.MimeSse))) ||
                    (!this._SetupSseSend(host))
                    )
                {
                    try
                    {
                        host.Response.Abort();
                    }
                    catch (Exception) { }
                    return;
                }
                Task.Factory.StartNew(() =>
                {
                    lock (this._lockClient)
                    {
                        if (this._notifySseClient.Find(o => (o.Response.Equals(host.Response))) == null)
                        {
                            try
                            {
                                this._notifySseClient.Add(host);
                            }
#if DEBUG
                            catch (Exception e)
                            {
                                if (this._parent.isLogEnable)
                                {
                                    this._parent._ilog.LogError(
                                        string.Format(
                                            Properties.Resources.CoCNotifyProcessError,
                                            Properties.Resources.CoCNotifyAddClient,
                                            host.IpAddress,
                                            e.Message
                                            )
                                        );
                                }
#else
                            catch (Exception)
                            {
#endif
                                return;
                            }
                        }
                    } // end lock client
#if DEBUG
                    if (this._parent.isLogEnable)
                    {
                        this._parent._ilog.LogInfo(
                            string.Format(
                                Properties.Resources.CoCNotifyProcessDebug,
                                host.IpAddress,
                                Properties.Resources.CoCNotifyHostDataCount,
                                this._notifySseClient.Count + "/" + this._data.Rows.Count
                                )
                            );
                    }
#endif
                    if (this._data.Rows.Count > 0)
                    {
                        lock (this._lockData)
                        {
                            if (!this._DataSseSend(host))
                            {
                                lock (_lockClient)
                                {
                                    this._notifySseClient.Remove(host);
                                }
                            }
                        } // end lock data
                    }
                });
            }
Exemplo n.º 10
0
 public bool SendSseStreamAlive(CoCNotifyHost host)
 {
     return(this._SendPartSse(host, this._EventSseToString(CoCEnum.EventNotify.TestAlive.ToString(), DateTime.Now.ToString(), this.getEventId)));
 }
Exemplo n.º 11
0
 public bool SendSseStreamPart(CoCNotifyHost host, string evname, string evdata)
 {
     return(this._SendPartSse(host, this._EventSseToString(evname, evdata, this.getEventId)));
 }
Exemplo n.º 12
0
 private bool _SetupSseSend(CoCNotifyHost host)
 {
     return(this._SendPartSse(host, this._EventSseToString(CoCEnum.EventNotify.EventSetup.ToString(), this._sseSetup, this.getEventId)));
 }
Exemplo n.º 13
0
 public bool NotifySendRssComplette(CoCNotifyHost host)
 {
     return(this._cocNotifier.SendRssComplette(host));
 }
Exemplo n.º 14
0
 public bool NotifySendJsonComplette(CoCNotifyHost host, bool isfull = true)
 {
     return(this._cocNotifier.SendJsonComplette(host, isfull));
 }
Exemplo n.º 15
0
 public bool NotifySendSseStreamComplette(CoCNotifyHost host, string evname, string evdata)
 {
     return(this._cocNotifier.SendSseStreamComplette(host, evname, evdata));
 }
Exemplo n.º 16
0
 public void NotifySseAdd(CoCNotifyHost host)
 {
     this._cocNotifier.AddSseHost(host);
 }