private void websocket_Closed(object sender, EventArgs e) { Pusher.Log("Websocket connection has been closed"); ChangeState(ConnectionState.Disconnected); if (_allowReconnect) { Connect(); } }
private void websocket_MessageReceived(object sender, MessageEventArgs e) { Pusher.Log("Websocket message received: " + e.Data); if (e.IsPing) { Send("{\"event\": \"pusher:pong\"}"); return; } PusherEventData message = PusherEventData.FromJson(e.Data); _pusher.EmitEvent(message.eventName, message.data); if (message.eventName.StartsWith("pusher")) { // Assume Pusher event switch (message.eventName) { case Constants.ERROR: ParseError(message.data); break; case Constants.CONNECTION_ESTABLISHED: ParseConnectionEstablished(message.data); break; case Constants.CHANNEL_SUBSCRIPTION_SUCCEEDED: if (_pusher.Channels.ContainsKey(message.channel)) { var channel = _pusher.Channels[message.channel]; channel.SubscriptionSucceeded(message.data); } break; case Constants.CHANNEL_SUBSCRIPTION_ERROR: throw new PusherException("Error received on channel subscriptions: " + e.Data, ErrorCodes.SubscriptionError); case Constants.CHANNEL_MEMBER_ADDED: // Assume channel event if (_pusher.Channels.ContainsKey(message.channel)) { var channel = _pusher.Channels[message.channel]; if (channel is PresenceChannel) { ((PresenceChannel)channel).AddMember(message.data); break; } } Pusher.LogWarning("Received a presence event on channel '" + message.channel + "', however there is no presence channel which matches."); break; case Constants.CHANNEL_MEMBER_REMOVED: // Assume channel event if (_pusher.Channels.ContainsKey(message.channel)) { var channel = _pusher.Channels[message.channel]; if (channel is PresenceChannel) { ((PresenceChannel)channel).RemoveMember(message.data); break; } } Pusher.LogWarning("Received a presence event on channel '" + message.channel + "', however there is no presence channel which matches."); break; } } else { // Assume channel event if (_pusher.Channels.ContainsKey(message.channel)) { _pusher.Channels[message.channel].EmitEvent(message.eventName, message.data); } } }
internal void Send(string message) { Pusher.Log("Sending: " + message); _websocket.SendAsync(message, delegate(bool obj) { }); }
public Connection(Pusher pusher, string url) { this._url = url; this._pusher = pusher; }
private void websocket_Error(object sender, WebSocketSharp.ErrorEventArgs e) { // TODO: What happens here? Do I need to re-connect, or do I just log the issue? Pusher.LogWarning("Websocket error: " + e.Message); }
private void websocket_Opened(object sender, EventArgs e) { Pusher.Log("Websocket opened OK."); }
public PresenceChannel(string channelName, Pusher pusher) : base(channelName, pusher) { }