/// <summary> /// Unregister a specific receiver. /// </summary> /// <param name="eventName">Name of the event.</param> /// <param name="callback">The event handler.</param> public void UnregisterEventReceiver(string eventName, OnReceiveEvent callback) { if (_eventMap.ContainsKey(eventName)) { _eventMap[eventName].Remove(callback); } }
public void Receive() { if (_client.Count == 0) { Task.Delay(1000).ContinueWith(t => { Receive(); }, TaskScheduler.FromCurrentSynchronizationContext()); return; } var bytes = new Byte[256]; foreach (var client in _client) { var stream = client.GetStream(); stream.ReadAsync(bytes, 0, bytes.Length).ContinueWith(task => { string message = Encoding.UTF8.GetString(bytes, 0, task.Result); Console.WriteLine($"Reveive : {message} (Server)"); OnReceiveEvent?.Invoke(message, client); if (message.Length == 0) { Console.WriteLine($@"Passive Closing : {client.Client.RemoteEndPoint}"); client.Close(); } //SocketException error = new SocketException(); //Console.WriteLine(error); }, TaskScheduler.FromCurrentSynchronizationContext()); } }
// 受信待機処理 private void Receive() { IsWorking = true; while (IsWorking) { // 指定したパイプ名のパイプを生成 using (NamedPipeServerStream server = new NamedPipeServerStream(PipeName)) { // 受信があるまで待機 server.WaitForConnection(); // 受信後、ストリームから内容を読み込む while (server.IsConnected) { using (BinaryReader sr = new BinaryReader(server, Encoding.UTF8)) { // ストリームから1行ずつ読込 string line = sr.ReadString(); line = line.Trim(); if (line.Length > 0) { // メッセージ内容と共にイベント発生 Thread t = new Thread(() => { OnReceiveEvent.Invoke(line); }); t.Start(); } } } } Thread.Sleep(Wait); } }
/// <summary> /// Register an event receiver with this EventManager. /// </summary> /// <param name="eventType">Event type defined in Constants</param> /// <param name="callback">The event receiver function.</param> public void RegisterEventReceiver(Constants.Event eventType, OnReceiveEvent callback) { if (m_EventTypeName.Count == 0) { InitializeEventTypeNames(); } RegisterEventReceiver(m_EventTypeName[eventType], callback); }
/// <summary> /// Handle received IP addresses /// </summary> IEnumerator ProcessReceived() { while (true) { yield return(new WaitUntil(() => received.Count > 0)); OnReceiveEvent?.Invoke(received.Dequeue()); } }
public async Task Connect() { await _connection.Start(); var work = _proxy.Invoke("Register", "123456"); _proxy.On("SendMessage", (string userId, string content) => { OnReceiveEvent?.Invoke(userId, content); }); }
/// <summary> /// Register an event receiver with this EventManager. /// </summary> /// <param name="eventName">The name of the event.</param> /// <param name="callback">The event receiver function.</param> public void RegisterEventReceiver(string eventName, OnReceiveEvent callback) { if (!_eventMap.ContainsKey(eventName)) { _eventMap.Add(eventName, new List <OnReceiveEvent>() { callback }); } else { _eventMap[eventName].Add(callback); } }
//负责连接的方法 public void Connect() { try { _connection.Start(); _proxy.On("sendMessage", (string platform, string msg) => { OnReceiveEvent?.Invoke(this, platform + ":" + msg); }); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } }
/// <summary> /// 接收数据 /// </summary> /// <param name="data">数据</param> /// <param name="length">数据长度</param> protected virtual void OnReceive(byte[] data, int length) { var protocol = Protocol.Parse(data, length); if (protocol == null) { return; } if (!protocol.DstId.Equals(clientId)) { return; } var sessionId = protocol.SessionId; if (string.IsNullOrEmpty(sessionId)) { sessionId = GenerateSessionId(); } var session = Get(sessionId); if (session != null) { session.dstId = protocol.SrcId; session.LastActiveTime = DateTime.Now; } if ((protocol.Data == null) || (protocol.Data.Length == 0)) { return; } OnReceiveEvent.Invoke(session, protocol.Data); }
private void OnReceiveData(List <Packet.Packet> packets) { OnReceiveEvent?.Invoke(_id, packets); }
public override void Send <EventType>(EventType ev) { ev.Sender = this; OnReceiveEvent?.Invoke(ev); ReceivedEvents.Add(ev); }
private void FireEvent(BaseDTO args) { OnReceiveEvent?.Invoke(args); }