public void Regist(string Id) { IPushCallback callbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); //添加到管理列表中 ChannelManager.Instance.Add(callbackChannel, Id); }
public void StartPushingStream() { log.Add("StartPushingStream"); IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); Task.Factory.StartNew(PushStream, pushCallbackChannel, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); }
public void UnRegist(string Id) { IPushCallback callbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); //从管理列表中移除 ChannelManager.Instance.Remove(callbackChannel, Id); }
public void StartPushingStreamLongWait() { log.Add("StartPushingStream"); IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); ThreadPool.QueueUserWorkItem(new WaitCallback(PushStreamLongwait), pushCallbackChannel); }
private void Instance_OnOparateChannel(object sender, ChannelEventArg e) { IPushCallback callback = sender as IPushCallback; switch (e.Type) { case OparateType.Add: lstChannel.Items.Add(e.Id); txtConsole.AppendText("订阅客户端:" + e.Id + "\r\n"); _current++; lklblNum.Text = _current.ToString(); break; case OparateType.Remove: lstChannel.Items.Remove(e.Id); txtConsole.AppendText("退订客户端:" + e.Id + "\r\n"); _current--; lklblNum.Text = _current.ToString(); break; case OparateType.Notify: txtConsole.AppendText("发布给客户端:" + e.Id + "消息\r\n"); break; default: break; } }
public void StartPushingData() { _log.Add("StartPushingData"); _continuePushingData = true; IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); Task.Factory.StartNew(PushData, pushCallbackChannel, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); }
public void StartPushingData() { log.Add("StartPushingData"); continuePushingData = true; IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); ThreadPool.QueueUserWorkItem(new WaitCallback(PushData), pushCallbackChannel); }
void PushStream(object state) { IPushCallback pushCallbackChannel = state as IPushCallback; localStream = new FlowControlledStream(); localStream.ReadThrottle = TimeSpan.FromMilliseconds(800); pushCallbackChannel.ReceiveStream(localStream); }
void PushData(object state) { IPushCallback pushCallbackChannel = state as IPushCallback; do { pushCallbackChannel.ReceiveData(CreateInterestingString(rand.Next(4, 256))); }while (continuePushingData); pushCallbackChannel.ReceiveData(LastMessage); }
void PushStreamLongwait(object state) { IPushCallback pushCallbackChannel = state as IPushCallback; localStream = new FlowControlledStream(); localStream.ReadThrottle = TimeSpan.FromMilliseconds(3000); localStream.StreamDuration = TimeSpan.FromSeconds(2); try { pushCallbackChannel.ReceiveStreamWithException(localStream); } catch (Exception ex) { Console.WriteLine(String.Format("Server got the following exception: {0}", ex)); this.exceptionstring = ex.GetType().Name; } }
/// <summary> /// 从通道列表中移除对一个通道的管理 /// </summary> /// <param name="callbackChannel"></param> public void Remove(IPushCallback callbackChannel, string Id) { if (!callbackChannelList.ContainsKey(Id)) { Console.WriteLine("不存在待移除通道"); } else { lock (SyncObj) { callbackChannelList.Remove(Id); if (OnOparateChannel != null) { OnOparateChannel(callbackChannel, new ChannelEventArg(OparateType.Remove, Id)); } // Console.WriteLine("移除了一个通道"); } } }
/// <summary> /// 将回调通道加入到通道列表中进行管理 /// </summary> /// <param name="callbackChannel"></param> public void Add(IPushCallback callbackChannel, string Id) { if (callbackChannelList.ContainsKey(Id)) { Console.WriteLine("已存在重复通道"); } else { lock (SyncObj) { callbackChannelList.Add(Id, callbackChannel); if (OnOparateChannel != null) { OnOparateChannel(callbackChannel, new ChannelEventArg(OparateType.Add, Id)); } //Console.WriteLine("添加了新的通道"); } } }
public void GetLog() { IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>(); pushCallbackChannel.ReceiveLog(log); }