private void Enqueue(Messages.Request request) { if (request.Data.Payload.Data != null) //i need to sanitize the ints here too. { foreach (var item in request.Data.Payload.Data) { if (item.Value != null && item.Value.GetType() == typeof(int)) { request.Data.Payload.Data[item.Key] = Convert.ToInt64(item.Value); } } unconfirmedChangesets.Enqueue(request.Data.Payload.Data); } sendQueue.Enqueue(Newtonsoft.Json.JsonConvert.SerializeObject(request)); }
private void subscribeNotification(string path) { var req = new Messages.Request("n", new Messages.RequestPayload() { Path = "/" + path }); Enqueue(req); req = new Messages.Request("q", new Messages.RequestPayload() { Path = "/" + path, h = string.Empty }); Enqueue(req); }
private void HandleHandshake(string data) { dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(data); obj = obj.d; string type = obj.t; if (type == "r") { //this means a redirect! obj = obj.d; //now on obj i have a redirection. firebaseUrl = "wss://" + obj + "/.ws"; initializeConnections(); return; } obj = obj.d; serverTime = obj.ts; authurl = obj.h; authToken = obj.s; var initialRequest = new Messages.Request("s", new Messages.RequestPayload() { initialization = new Dictionary <string, object>() { { "sdk.js.3 - 6 - 2", 1 } } }); //"{\"t\":\"d\",\"d\":{\"r\":1,\"a\":\"s\",\"b\":{\"c\":{\"sdk.js.3 - 6 - 2\":1}}}}" Enqueue(initialRequest); processInput = PreProcessInput; //tests: //it seems that if i request an n, it is a notification of changes, but then i have to actually do a query for the information to start coming. foreach (var path in subscribedPaths) { subscribeNotification(path); } }