public WebSocketRailsChannel(String channelName, WebSocketRailsDispatcher dispatcher, bool isPrivate) { String eventName = null; if (isPrivate) { eventName = "websocket_rails.subscribe_private"; } else { eventName = "websocket_rails.subscribe"; } this.channelName = channelName; this.dispatcher = dispatcher; JSONObject frame = new JSONObject(JSONObject.Type.ARRAY); frame.Add(eventName); JSONObject dataJSON = new JSONObject(); JSONObject infoJSON = new JSONObject(); infoJSON.AddField("channel", channelName); dataJSON.AddField("data", infoJSON); frame.Add(dataJSON); frame.Add(dispatcher.ConnectionId); // UnityEngine.Debug.LogWarning(frame); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, null, null); callbacks = new Dictionary <String, List <EventHandler <WebSocketRailsDataEventArgs> > >(); dispatcher.TriggerEvent(_event); }
public void NewMessage(List <JSONObject> data) { foreach (JSONObject socket_message in data) { WebSocketRailsEvent _event = new WebSocketRailsEvent(socket_message); if (_event.IsResult) { if (queue.ContainsKey(_event.Id)) { queue[_event.Id].RunCallbacks(_event.IsSuccess, _event.Data); queue.Remove(_event.Id); } } else if (_event.IsChannel) { DispatchChannel(_event); } else if (_event.IsPing()) { Pong(); } else { Dispatch(_event); } if (State == "connecting" && _event.Name == "client_connected") { ConnectionEstablished(_event.Data); } } }
private void DispatchChannel(WebSocketRailsEvent _event) { if (!channels.ContainsKey(_event.Channel)) { return; } channels[_event.Channel].Dispatch(_event.Name, _event.Data); }
public void TriggerEvent(WebSocketRailsEvent _event) { if (queue.ContainsKey(_event.Id) && queue[_event.Id] == _event) { return; } queue[_event.Id] = _event; connection.Trigger(_event); }
public void Trigger(WebSocketRailsEvent _event) { if (dispatcher.State == "connected") { message_queue.Add(_event); } else { webSocket.Send(_event.Serialize()); } }
void webSocket_Closed(object sender, EventArgs e) { List <Object> data = new List <Object>(); data.Add("connection_closed"); data.Add(new Dictionary <String, Object>()); WebSocketRailsEvent closeEvent = new WebSocketRailsEvent(data); dispatcher.State = "disconnected"; dispatcher.Dispatch(closeEvent); }
void webSocket_Closed(object sender, EventArgs e) { JSONObject dataJSON = new JSONObject(JSONObject.Type.ARRAY); dataJSON.Add("connection_closed"); dataJSON.Add(new JSONObject()); WebSocketRailsEvent closeEvent = new WebSocketRailsEvent(dataJSON); dispatcher.State = "disconnected"; dispatcher.Dispatch(closeEvent); }
private void Pong() { List <Object> frame = new List <Object>(); frame.Add("websocket_rails.pong"); frame.Add(new Dictionary <String, Object>()); frame.Add(ConnectionId); WebSocketRailsEvent pong = new WebSocketRailsEvent(frame); connection.Trigger(pong); }
public void Trigger(WebSocketRailsEvent _event) { if (dispatcher.State != "connected") { message_queue.Add(_event); } else { webSocket.Send(_event.Serialize()); // UnityEngine.Debug.LogError(_event.Serialize()); } }
private void Pong() { JSONObject frame = new JSONObject(JSONObject.Type.ARRAY); frame.Add("websocket_rails.pong"); frame.Add(new JSONObject()); frame.Add(ConnectionId); WebSocketRailsEvent pong = new WebSocketRailsEvent(frame); connection.Trigger(pong); }
public void Dispatch(WebSocketRailsEvent _event) { if (!callbacks.ContainsKey(_event.Name)) { return; } foreach (EventHandler <WebSocketRailsDataEventArgs> callback in callbacks[_event.Name]) { callback(this, new WebSocketRailsDataEventArgs(_event.Data)); } }
public void ConnectionEstablished(JSONObject dataJSON) { State = "connected"; ConnectionId = dataJSON["connection_id"].str; connection.FlushQueue(ConnectionId); JSONObject frame = new JSONObject(); frame.Add("connection_opened"); frame.Add(new JSONObject()); WebSocketRailsEvent openedEvent = new WebSocketRailsEvent(frame); Dispatch(openedEvent); }
public void ConnectionEstablished(Object data) { state = "connected"; if (data.GetType() == typeof(JObject)) { Dictionary <String, Object> infoDictionary = ((JObject)data) .ToObject <Dictionary <String, Object> >(); ConnectionId = (String)infoDictionary["connection_id"]; connection.FlushQueue(ConnectionId); List <Object> frame = new List <Object>(); frame.Add("connection_opened"); frame.Add(new Dictionary <String, Object>()); WebSocketRailsEvent openedEvent = new WebSocketRailsEvent(frame); Dispatch(openedEvent); } }
public void Trigger(String eventName, JSONObject message) { JSONObject frame = new JSONObject(); frame.Add(eventName); JSONObject infoJSON = new JSONObject(); infoJSON.AddField("channel", channelName); infoJSON.AddField("data", message); infoJSON.AddField("token", token); frame.Add(infoJSON); frame.Add(dispatcher.ConnectionId); // UnityEngine.Debug.LogError(frame); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, null, null); dispatcher.TriggerEvent(_event); }
public void Trigger(String eventName, Object message) { List <Object> frame = new List <Object>(); frame.Add(eventName); Dictionary <String, Dictionary <String, Object> > data = new Dictionary <String, Dictionary <String, Object> >(); Dictionary <String, Object> info = new Dictionary <String, Object>(); info["channel"] = channelName; info["data"] = message; info["token"] = token; frame.Add(info); frame.Add(dispatcher.ConnectionId); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, null, null); dispatcher.TriggerEvent(_event); }
public void Destroy() { String eventName = "websocket_rails.unsubscribe"; JSONObject frame = new JSONObject(); frame.Add(eventName); JSONObject dataJSON = new JSONObject(); JSONObject infoJSON = new JSONObject(); infoJSON.AddField("channel", channelName); dataJSON.AddField("data", infoJSON); frame.Add(dataJSON); frame.Add(dispatcher.ConnectionId); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, null, null); dispatcher.TriggerEvent(_event); callbacks.Clear(); isSubscribed = false; }
public WebSocketRailsChannel(String channelName, WebSocketRailsDispatcher dispatcher, bool isPrivate) { String eventName = null; if (isPrivate) { eventName = "websocket_rails.subscribe_private"; } else { eventName = "websocket_rails.subscribe"; } this.channelName = channelName; this.dispatcher = dispatcher; List <Object> frame = new List <Object>(); frame.Add(eventName); Dictionary <String, Object> data = new Dictionary <String, Object>(); Dictionary <String, Object> info = new Dictionary <String, Object>(); info["channel"] = channelName; data["data"] = info; frame.Add(data); frame.Add(dispatcher.ConnectionId); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, null, null); callbacks = new Dictionary <String, List <EventHandler <WebSocketRailsDataEventArgs> > >(); dispatcher.TriggerEvent(_event); }
public void Destroy() { String eventName = "websocket_rails.unsubscribe"; List <Object> frame = new List <Object>(); frame.Add(eventName); Dictionary <String, Dictionary <String, Object> > data = new Dictionary <String, Dictionary <String, Object> >(); Dictionary <String, Object> info = new Dictionary <String, Object>(); info["channel"] = channelName; data["data"] = info; frame.Add(data); frame.Add(dispatcher.ConnectionId); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, null, null); dispatcher.TriggerEvent(_event); callbacks.Clear(); }
public void Trigger(String eventName, JSONObject data, EventHandler <WebSocketRailsDataEventArgs> success, EventHandler <WebSocketRailsDataEventArgs> failure) { JSONObject frame = new JSONObject(); frame.Add(eventName); // if (data.IsObject) // { // frame.Add(data); // } // else // { JSONObject payload = new JSONObject(); payload.AddField("data", data); frame.Add(payload); // } frame.Add(connectionId); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, success, failure); queue[_event.Id] = _event; connection.Trigger(_event); }
public void Trigger(String eventName, Object data, EventHandler <WebSocketRailsDataEventArgs> success, EventHandler <WebSocketRailsDataEventArgs> failure) { List <Object> frame = new List <Object>(); frame.Add(eventName); if (data is Dictionary <string, object> ) { frame.Add(data); } else { Dictionary <string, object> payload = new Dictionary <string, object>(); payload.Add("data", data); frame.Add(payload); } frame.Add(connectionId); WebSocketRailsEvent _event = new WebSocketRailsEvent(frame, success, failure); queue[_event.Id] = _event; connection.Trigger(_event); }