protected override async Task OnReceiveMessage(string uid, ServerSocketResponse package) { DashboardSessionSocket socket = Get(uid); if (socket == null) { return; } string data = await package.GetTextAsync(); if (string.IsNullOrEmpty(data) || !data.Contains('#')) { return; } string key = data.Substring(0, data.IndexOf('#')); string json = data.Substring(data.IndexOf('#') + 1); socket.OnInteraction(); switch (key) { case "register": socket.OnRegister(); return; /* * DIRECT */ case "direct": DirectSocketManager.OnRequestLoad(this, key, uid, json); return; } }
protected override async Task OnReceiveMessage(string uid, ServerSocketResponse package) { string key, json; SessionSocket socket = Get(uid); if (socket == null) { return; } try { string data = await package.GetTextAsync(); if (string.IsNullOrEmpty(data) || !data.Contains('#')) { return; } key = data.Substring(0, data.IndexOf('#')); json = data.Substring(data.IndexOf('#') + 1); socket.OnInteraction(); SessionType sessionType = Get(uid).SessionType; switch (key) { // // shared channels // case "register": if (sessionType == SessionType.Lander) { ((LanderCommunication)Get(uid).Channels[SessionSocketChannel.Lander]) .OnRegistration(key, JsonConvert.DeserializeObject <ReceivingRegistrationModel>(json)); } else if (sessionType == SessionType.Prelander) { ((PrelanderCommunication)Get(uid).Channels[SessionSocketChannel.Prelander]) .OnRegistration(key, JsonConvert.DeserializeObject <ReceivingRegistrationModel>(json)); } break; // // lander channels // case "user-create": case "user-subscribe": case "user-redirected": LanderCommunicationChannel channel = new LanderCommunicationChannel(Get(uid)); await channel.Start(key, json); break; // // prelander channels // case "pl-init": case "pl-tag": case "pl-q": PrelanderCommunicationChannel prelanderCommunication = new PrelanderCommunicationChannel(Get(uid)); await prelanderCommunication.Call(key, json); break; } } catch (Exception e) { CloseSession(socket); OnException("ApiSocket.OnReceiveMessage", uid, e); return; } }