public static void Handle(byte[] payloadBytes, ConnectionInfo connectionInfo) { var payloadString = Encoding.UTF8.GetString(payloadBytes); if (payloadString.StartsWith("subscribe#")) { connectionInfo.Topic = payloadString.Split("subscribe#").LastOrDefault(); ConnectionStorage.Add(connectionInfo); } else { PayLoad payload = JsonConvert.DeserializeObject <PayLoad>(payloadString); PayloadStorage.Add(payload); } }
public void DoSendMessageWork() { while (true) { while (!PayloadStorage.IsEmpty()) { var payload = PayloadStorage.GetNext(); if (payload != null) { var connections = ConnectionStorage.GetConnectionInfosByTopic(payload.Topic); foreach (var connection in connections) { var payloadString = JsonConvert.SerializeObject(payload); byte[] data = Encoding.UTF8.GetBytes(payloadString); connection.Socket.Send(data); } } } Thread.Sleep(TIME_TO_SLEEP); } }