private void OnMessageReceived(object sender, MessageReceivedEventArgs e) { var message = JsonConvert.DeserializeObject <Message>(e.Message); switch (message.Header) { case "Join": var joinRes = JsonConvert.DeserializeObject <JoinRes>(message.Body); JoinEvent?.Invoke(this, new JoinEventArgs { JoinRes = joinRes }); break; case "Hand": var handRes = JsonConvert.DeserializeObject <HandRes>(message.Body); HandEvent?.Invoke(this, new HandEventArgs { HandRes = handRes }); break; case "Tsumo": var tsumoRes = JsonConvert.DeserializeObject <TsumoRes>(message.Body); TsumoEvent?.Invoke(this, new TsumoEventArgs { TsumoRes = tsumoRes }); break; case "Dahai": var dahaiRes = JsonConvert.DeserializeObject <DahaiRes>(message.Body); DahaiEvent?.Invoke(this, new DahaiEventArgs { DahaiRes = dahaiRes }); break; case "Agari": var agariRes = JsonConvert.DeserializeObject <AgariRes>(message.Body); AgariEvent?.Invoke(this, new AgariEventArgs { AgariRes = agariRes }); break; default: break; } }