protected virtual void OnMessageLoad(EndPointMessage message) { var sender = Instance.DBTable.LoadById(message.SenderName); if (sender == null) { return; } sender.ReceiveCount++; sender.ReceiveLength += message.Lenght; switch (message.Type) { case (SocketMessageType.Hello): sender.Active = true; break; case (SocketMessageType.Login): sender.Active = true; Send(endPoint.GetBytes(), sender, SocketMessageType.Hello); break; case (SocketMessageType.Logout): sender.Detach(); break; case (SocketMessageType.Data): Deserialize(message.Data); break; } MessageLoad?.Invoke(message); }
public void Send(byte[] data, Instance address = null, SocketMessageType type = SocketMessageType.Data) { var buffer = EndPointMessage.Write(new EndPointMessage() { SenderName = instance.Id.ToString(), SenderEndPoint = endPoint, Type = type, Data = data }); if (type == SocketMessageType.Login) { Instance.DBTable.Load(); } foreach (Instance item in Instance.DBTable) { if (address == null || item == address) { if (item.Active.Value && item.EndPoint != null && !item.EndPoint.Equals(endPoint) && !IPAddress.Loopback.Equals(item.EndPoint.Address)) { Send(buffer, item.EndPoint); } } } }
protected override async void OnMessageLoad(EndPointMessage message) { base.OnMessageLoad(message); if (message.Type == SocketMessageType.Data) { var list = ParseMessage(message.Data); if (list.Length > 0) { await SendToWebClients(list); } } }
protected override void OnDataLoad(UdpServerEventArgs arg) { base.OnDataLoad(arg); //arg.Point var message = EndPointMessage.Read(arg.Data); if (message != null) { message.RecivedEndPoint = arg.Point; try { OnMessageLoad(message); } catch (Exception e) { Helper.OnException(e); } } }
public void Send(NotifyMessageItem[] items, IInstance address = null) { var buffer = (byte[])null; foreach (IInstance item in Instance.DBTable) { if (CheckAddress(item, address)) { if (buffer == null) { buffer = EndPointMessage.Write(new EndPointMessage { SenderName = instance.Id.ToString(), SenderEndPoint = endPoint, Type = SocketMessageType.Data, Data = Serialize(items) }); } Send(buffer, item.EndPoint, item); } } }
public void Send(byte[] data, IInstance address = null, SocketMessageType type = SocketMessageType.Data, bool checkState = false) { var buffer = EndPointMessage.Write(new EndPointMessage() { SenderName = instance.Id.ToString(), SenderEndPoint = endPoint, Type = type, Data = data }); if (type == SocketMessageType.Login) { Instance.DBTable.Load(); } foreach (IInstance item in Instance.DBTable) { if (CheckAddress(item, address, checkState)) { Send(buffer, item.EndPoint, item); } } }