private XhrReceiver(string url, AjaxObjectFactory ajaxObject) { Log.Debug($"{nameof(XhrReceiver)}: {url}"); this._bufferPosition = 0; this._xo = ajaxObject("POST", url, null); this._xo.On("chunk", this.ChunkHandler); this._xo.Once("finish", this.OnFinish); }
public Polling(ReceiverFactory receiver, string receiveUrl, AjaxObjectFactory ajaxObject) { Log.Debug($"{nameof(Polling)}: {receiveUrl}"); this._receiver = receiver; this._receiveUrl = receiveUrl; this._ajaxObject = ajaxObject; this.ScheduleReceiver(); }
private static SenderDelegate CreateAjaxSender(AjaxObjectFactory ajaxObject) { return((url, payload, callback) => { Log.Debug($"{nameof(CreateAjaxSender)}: Create ajax sender {url} {payload}"); var opt = new TransportOptions(); if (!payload.IsNullOrEmpty()) { opt.Headers = new Dictionary <string, string> { { "Content-type", "text/plain" } } } ; var ajaxUrl = new Uri(url).AddPath("/xhr_send"); var xo = ajaxObject("POST", ajaxUrl.OriginalString, payload, opt); xo.Once("finish", (sender, e) => { var status = (int)e[0]; Log.Debug($"{nameof(CreateAjaxSender)}: Finish {status}"); xo = null; if (status != 200 && status != 204) { callback(new Exception($"http status {status}")); return; } callback(null); }); return () => { Log.Debug($"{nameof(CreateAjaxSender)}: Abort"); xo.Close(); xo = null; var err = new CodedException("Aborted", 1000); callback(err); }; }); }
public static IReceiver Build(string url, AjaxObjectFactory ajaxObject) { var receiver = new XhrReceiver(url, ajaxObject); return(receiver); }
protected AjaxBasedTransport(string transportUrl, string urlSuffix, Polling.ReceiverFactory receiver, AjaxObjectFactory ajaxObject) : base(transportUrl, urlSuffix, CreateAjaxSender(ajaxObject), receiver, ajaxObject) { }
protected SenderReceiver(string transUrl, string urlSuffix, SenderDelegate senderFunc, Polling.ReceiverFactory receiver, AjaxObjectFactory ajaxObject) : base(transUrl, senderFunc) { var pollUrl = new Uri(transUrl).AddPath(urlSuffix); Log.Debug($"{nameof(SenderReceiver)}: {pollUrl}"); this._poll = new Polling(receiver, pollUrl.OriginalString, ajaxObject); this._poll.On("message", this.OnMessage); this._poll.Once("close", this.OnPollClose); }