コード例 #1
0
ファイル: XhrReceiver.cs プロジェクト: git-thinh/SockJS.NET
 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);
 }
コード例 #2
0
 public Polling(ReceiverFactory receiver, string receiveUrl, AjaxObjectFactory ajaxObject)
 {
     Log.Debug($"{nameof(Polling)}: {receiveUrl}");
     this._receiver   = receiver;
     this._receiveUrl = receiveUrl;
     this._ajaxObject = ajaxObject;
     this.ScheduleReceiver();
 }
コード例 #3
0
        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);
                };
            });
        }
コード例 #4
0
ファイル: XhrReceiver.cs プロジェクト: git-thinh/SockJS.NET
        public static IReceiver Build(string url, AjaxObjectFactory ajaxObject)
        {
            var receiver = new XhrReceiver(url, ajaxObject);

            return(receiver);
        }
コード例 #5
0
 protected AjaxBasedTransport(string transportUrl, string urlSuffix, Polling.ReceiverFactory receiver, AjaxObjectFactory ajaxObject)
     : base(transportUrl, urlSuffix, CreateAjaxSender(ajaxObject), receiver, ajaxObject)
 {
 }
コード例 #6
0
        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);
        }