private static void PongHandler(ConnectcastChannel channel, dynamic data) { if (channel.disconnectTimer != null) { channel.disconnectTimer.Change(PING_INTERVAL + 1000, Timeout.Infinite); } }
private static void DataHandler(ConnectcastChannel channel, dynamic data) { if (data == null) { return; } string type = (string)data[0]; if (String.IsNullOrWhiteSpace(type)) { return; } if (type.StartsWith("update-chat", StringComparison.InvariantCultureIgnoreCase)) { dynamic senderInfo = (dynamic)data[2]; string room = (string)senderInfo["room"]; if (String.IsNullOrWhiteSpace(room) || !room.Equals(channel.ChannelName.Replace("#", ""), StringComparison.InvariantCultureIgnoreCase)) { return; } string name = (string)senderInfo["name"]; string messageHtml = data[1]; string text = Re.GetSubString(messageHtml, "<p>(.*)</p>"); if (String.IsNullOrWhiteSpace(name) || String.IsNullOrWhiteSpace(text)) { return; } channel.ChannelStats.MessagesCount++; channel.Chat.UpdateStats(); if (channel.ReadMessage != null) { channel.ReadMessage(new ChatMessage() { Channel = channel.ChannelName, ChatIconURL = channel.Chat.IconURL, ChatName = channel.Chat.ChatName, FromUserName = name, HighlyImportant = false, IsSentByMe = false, Text = text, }); } } }
private static void ConnectHandler(ConnectcastChannel channel, dynamic data) { channel.Chat.Status.IsConnected = true; channel.webSocket.Send("5"); channel.webSocket.Send( String.Format(@"42[""join"",{{""room"":""{0}"",""token"":""{1}""}}]", channel.ChannelName.Replace("#", ""), channel.channelToken )); if (channel.JoinCallback != null) { channel.JoinCallback(channel); } }