<%@ WebService Language="C#" Class="OpenAjaxChat" %> // OpenAjaxChat.asmx // This is the webservice for the OpenAjax hub extender sample. // Copyright (c) by Matthias Hertel, http://www.mathertel.de // This work is licensed under a BSD style license. See http://www.mathertel.de/License.aspx // - - - - - // 13.08.2007 created by Matthias Hertel using System; using System.Collections.Specialized; using System.Text; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class OpenAjaxChat : System.Web.Services.WebService { private static long globalMarker = DateTime.Now.Ticks; private static StringCollection serverMark = new StringCollection(); private static StringCollection serverData = new StringCollection(); [WebMethod] public void Publish(string eventName, string eventData) { long nowMarker = DateTime.Now.Ticks; // calculate the next marker globalMarker++; if (globalMarker < nowMarker) globalMarker = nowMarker; // clear out oldest message if there are too many if (serverMark.Count > 20) serverMark.RemoveAt(0); if (serverData.Count > 20) serverData.RemoveAt(0); serverMark.Add(nowMarker.ToString()); serverData.Add(eventName + ":" + eventData); } // publish [WebMethod] public string PullEvents(string marker) { StringBuilder ret = new StringBuilder(); if ((marker == null) || (marker.Length == 0)) { marker = "0"; } // if for (int n = 0; n < serverMark.Count; n++) { if (serverMark[n].CompareTo(marker) > 0) ret.AppendLine(serverData[n]); } // for ret.Append(globalMarker.ToString()); return (ret.ToString()); } // pullevents }
This page is part of the http://www.mathertel.de/ web site.
For updates and discussions see http://ajaxaspects.blogspot.com/.