@@ -191,28 +191,45 @@
191 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
when connection errors arrise. It starts off with a polling
192 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
delay of $initialDelay ms. If there's a connection error,
193 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
that gets bumped by some value for each subsequent error, up
194 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
to some max value.
195 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- The timeing of resetting the delay when service returns is,
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The timing of resetting the delay when service returns is,
197 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
because of the long-poll connection and our lack of low-level
198 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
insight into the connection at this level, a bit wonky.
199 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
200 200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
timer:{
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tidPoller: undefined /* poller timer */,
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tidPoller: undefined /* setTimeout() poller timer id */,
202 202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
$initialDelay: 1000 /* initial polling interval (ms) */,
203 203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentDelay: 1000 /* current polling interval */,
204 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
maxDelay: 60000 * 5 /* max interval when backing off for
205 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
connection errors */,
206 206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
minDelay: 5000 /* minimum delay time */,
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tidReconnect: undefined /*timer id for reconnection determination*/,
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tidReconnect: undefined /*setTimeout() timer id for
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reconnection determination. See
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ clearPollErrOnWait(). */,
208 210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCount: 0 /* Current poller connection error count */,
209 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
minErrForNotify: 4 /* Don't warn for connection errors until this
210 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
many have occurred */,
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pollTimeout: (1 && window.location.hostname.match(
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "localhost" /*presumably local dev mode*/
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ )) ? 15000
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ : (+F.config.chat.pollTimeout>0
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ? (1000 * (F.config.chat.pollTimeout - Math.floor(F.config.chat.pollTimeout * 0.1)))
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^^^^^^^^^^^^ we want our timeouts to be slightly shorter
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ than the server's so that we can distingished timed-out
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ polls on our end from HTTP errors (if the server times
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ out). */
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ : 30000),
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /** Returns a random fudge value for reconnect attempt times,
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ intended to keep the /chat server from getting hammered if
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ all clients which were just disconnected all reconnect at
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the same instant. */
211 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
randomInterval: function(factor){
212 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return Math.floor(Math.random() * factor);
213 229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /** Increments the reconnection delay, within some min/max range. */
214 231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incrDelay: function(){
215 232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( this.maxDelay > this.currentDelay ){
216 233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(this.currentDelay < this.minDelay){
217 234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.currentDelay = this.minDelay + this.randomInterval(this.minDelay);
218 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -219,13 +236,15 @@
219 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.currentDelay = this.currentDelay*2 + this.randomInterval(this.currentDelay);
220 237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
221 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
222 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return this.currentDelay;
223 240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- resetDelay: function(ms){
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /** Resets the delay counter to v || its initial value. */
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ resetDelay: function(ms=0){
225 243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return this.currentDelay = ms || this.$initialDelay;
226 244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /** Returns true if the timer is set to delayed mode. */
227 246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isDelayed: function(){
228 247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (this.currentDelay > this.$initialDelay) ? this.currentDelay : 0;
229 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
230 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
231 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
@@ -739,11 +758,10 @@
739 758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lmtime: d,
740 759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xmsg: args
741 760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
742 761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.injectMessageElem(mw.e.body);
743 762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mw.scrollIntoView();
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //Chat.playNewMessageSound();// browser complains b/c this wasn't via human interaction
745 763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return mw;
746 764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
747 765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
748 766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cs.getMessageElemById = function(id){
749 767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return qs('[data-msgid="'+id+'"]');
@@ -865,11 +883,11 @@
865 883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const self = this;
866 884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch('chat-fetch-one',{
867 885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
urlParams:{ name: id, raw: true},
868 886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
responseType: 'json',
869 887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload: function(msg){
870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished('chat-fetch-one');
888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('chat-fetch-one');
871 889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content.$elems[1] = D.append(D.pre(),msg.xmsg);
872 890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content.$elems[1]._xmsgRaw = msg.xmsg/*used for copy-to-clipboard feature*/;
873 891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
self.toggleTextMode(e);
874 892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
875 893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aftersend:function(){
@@ -928,11 +946,11 @@
928 946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(this.userMayDelete(e)){
929 947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.ajaxStart();
930 948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch("chat-delete/" + id, {
931 949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
responseType: 'json',
932 950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload:(r)=>{
933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished('chat-delete');
951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('chat-delete');
934 952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this.deleteMessageElem(r);
935 953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
936 954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onerror:(err)=>this.reportErrorAsMessage(err)
937 955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
});
938 956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -1560,11 +1578,11 @@
1560 1578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n: nFetch,
1561 1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i: iFirst
1562 1580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
1563 1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
responseType: "json",
1564 1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload:function(jx){
1565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished('chat-query.onload');
1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('chat-query');
1566 1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bDown ) jx.msgs.reverse();
1567 1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jx.msgs.forEach((m) => {
1568 1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m.isSearchResult = true;
1569 1587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
var mw = new Chat.MessageWidget(m);
1570 1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bDown ){
@@ -1732,19 +1750,20 @@
1732 1750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1733 1751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1734 1752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Assume the connection has been established, reset the
1735 1753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.timer.tidReconnect, and (if showMsg and
1736 1754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
!!Chat.e.eMsgPollError) alert the user that the outage appears to
1737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- be over. Then schedule Chat.poll() to run in the very near
1755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ be over. Also schedule Chat.poll() to run in the very near
1738 1756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
future. */
1739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const reportConnectionReestablished = function(dbgContext, showMsg = true){
1757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const reportConnectionOkay = function(dbgContext, showMsg = true){
1740 1758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(Chat.beVerbose){
1741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- console.warn('reportConnectionReestablished', dbgContext,
1759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ console.warn('reportConnectionOkay', dbgContext,
1742 1760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'Chat.e.pollErrorMarker =',Chat.e.pollErrorMarker,
1743 1761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'Chat.timer.tidReconnect =',Chat.timer.tidReconnect,
1744 1762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
'Chat.timer =',Chat.timer);
1745 1763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ setTimeout( Chat.poll, Chat.timer.resetDelay() );
1746 1765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( Chat.timer.errCount ){
1747 1766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.removeClass(Chat.e.pollErrorMarker, 'connection-error');
1748 1767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.timer.errCount = 0;
1749 1768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1750 1769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( Chat.timer.tidReconnect ){
@@ -1764,33 +1783,10 @@
1764 1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1765 1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m.e.body.dataset.alsoRemove = oldErrMsg?.e?.body?.dataset?.msgid;
1766 1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.addClass(m.e.body,'poller-connection');
1767 1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1768 1787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- setTimeout( Chat.poll, Chat.timer.resetDelay() );
1770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
1771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* To be called from F.fetch('chat-poll') beforesend() handler. If
1773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- we're currently in delayed-retry mode and a connection is
1774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- started, try to reset the delay after N time waiting on that
1775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- connection. The fact that the connection is waiting to respond,
1776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rather than outright failing, is a good hint that the outage is
1777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- over and we can reset the back-off timer. */
1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const clearPollErrOnWait = function(){
1779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //console.warn('clearPollErrOnWait outer', Chat.timer.tidReconnect, Chat.timer.currentDelay);
1780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !Chat.timer.tidReconnect && Chat.timer.isDelayed() ){
1781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.timer.tidReconnect = setTimeout(()=>{
1782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //console.warn('clearPollErrOnWait inner');
1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.timer.tidReconnect = 0;
1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( poll.running ){
1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* This chat-poll F.fetch() is still underway, so let's
1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assume the connection is back up until/unless it times
1787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- out or breaks again. */
1788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished('clearPollErrOnWait');
1789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }, Chat.timer.$initialDelay * 3 );
1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1792 1788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1793 1789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1794 1790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
1795 1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Submits the contents of the message input field (if not empty)
1796 1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
and/or the file attachment field to the server. If both are
@@ -1850,11 +1846,11 @@
1850 1846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onerror:function(err){
1851 1847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
self.reportErrorAsMessage(err);
1852 1848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
recoverFailedMessage(fallback);
1853 1849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
1854 1850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload:function(txt){
1855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished();
1851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('chat-send');
1856 1852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!txt) return/*success response*/;
1857 1853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
try{
1858 1854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const json = JSON.parse(txt);
1859 1855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
self.newContent({msgs:[json]});
1860 1856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}catch(e){
@@ -2350,11 +2346,11 @@
2350 2346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*filename needed for mimetype determination*/);
2351 2347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fd.append('render_mode',F.page.previewModes.wiki);
2352 2348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch('ajax/preview-text',{
2353 2349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
payload: fd,
2354 2350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload: function(html){
2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished();
2351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('ajax/preview-text');
2356 2352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.setPreviewText(html);
2357 2353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.pikchr.addSrcView(Chat.e.viewPreview.querySelectorAll('svg.pikchr'));
2358 2354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2359 2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onerror: function(e){
2360 2356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch.onerror(e);
@@ -2488,11 +2484,11 @@
2488 2484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onerror:function(err){
2489 2485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.reportErrorAsMessage(err);
2490 2486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat._isBatchLoading = false;
2491 2487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2492 2488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload:function(x){
2493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished();
2489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('loadOldMessages()');
2494 2490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
let gotMessages = x.msgs.length;
2495 2491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
newcontent(x,true);
2496 2492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat._isBatchLoading = false;
2497 2493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.updateActiveUserList();
2498 2494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(Chat._gotServerError){
@@ -2578,11 +2574,11 @@
2578 2574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onerror:function(err){
2579 2575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.setCurrentView(Chat.e.viewMessages);
2580 2576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.reportErrorAsMessage(err);
2581 2577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2582 2578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload:function(jx){
2583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished();
2579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('submitSearch()');
2584 2580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
let previd = 0;
2585 2581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.clearElement(eMsgTgt);
2586 2582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jx.msgs.forEach((m)=>{
2587 2583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m.isSearchResult = true;
2588 2584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const mw = new Chat.MessageWidget(m);
@@ -2611,10 +2607,39 @@
2611 2607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2612 2608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2613 2609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2614 2610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
2615 2611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}/*Chat.submitSearch()*/;
2612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* To be called from F.fetch('chat-poll') beforesend() handler. If
2614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ we're currently in delayed-retry mode and a connection is
2615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ started, try to reset the delay after N time waiting on that
2616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ connection. The fact that the connection is waiting to respond,
2617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rather than outright failing, is a good hint that the outage is
2618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ over and we can reset the back-off timer.
2619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Without this, recovery of a connection error won't be reported
2621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ until after the long-poll completes by either receiving new
2622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ messages or times out. Once a long-poll is in progress, though,
2623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ we "know" that it's up and running again, so can update the UI
2624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ and connection timer to reflect that.
2625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
2626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const chatPollBeforeSend = function(){
2627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ //console.warn('chatPollBeforeSend outer', Chat.timer.tidReconnect, Chat.timer.currentDelay);
2628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !Chat.timer.tidReconnect && Chat.timer.isDelayed() ){
2629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.timer.tidReconnect = setTimeout(()=>{
2630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ //console.warn('chatPollBeforeSend inner');
2631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.timer.tidReconnect = 0;
2632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( poll.running ){
2633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This chat-poll F.fetch() is still underway, so let's
2634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assume the connection is back up until/unless it times
2635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ out or breaks again. */
2636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('chatPollBeforeSend', true);
2637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }, Chat.timer.$initialDelay * 3 );
2639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
2616 2641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2617 2642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**
2618 2643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Deal with the last poll() response and maybe re-start poll().
2619 2644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2620 2645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const afterPollFetch = function f(err){
@@ -2640,23 +2665,27 @@
2640 2665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( err && Chat.beVerbose ){
2641 2666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
console.error("afterPollFetch:",err.name,err.status,err.message);
2642 2667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2643 2668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !err || 'timeout'===err.name/*(probably) long-poll expired*/ ){
2644 2669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Restart the poller immediately. */
2645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished('afterPollFetch '+err, false);
2670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('afterPollFetch '+err, false);
2646 2671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2647 2672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Delay a while before trying again, noting that other Chat
2648 2673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
APIs may try and succeed at connections before this timer
2649 2674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resolves, in which case they'll clear this timeout and the
2650 2675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UI message about the outage. */
2651 2676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
let delay;
2652 2677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
D.addClass(Chat.e.pollErrorMarker, 'connection-error');
2653 2678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ++Chat.timer.errCount < Chat.timer.minErrForNotify ){
2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ delay = Chat.timer.resetDelay(
2680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (Chat.timer.minDelay * Chat.timer.errCount)
2681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ + Chat.timer.randomInterval(Chat.timer.minDelay)
2682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
2654 2683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(Chat.beVerbose){
2655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- console.warn("Ignoring polling error #", Chat.timer.errCount);
2684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ console.warn("Ignoring polling error #",Chat.timer.errCount,
2685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "for another",delay,"ms" );
2656 2686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- delay = Chat.timer.resetDelay(Chat.timer.minDelay);
2658 2687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
2659 2688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
delay = Chat.timer.incrDelay();
2660 2689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
//console.warn("afterPollFetch Chat.e.eMsgPollError",Chat.e.eMsgPollError);
2661 2690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const msg = "Poller connection error. Retrying in "+delay+ " ms.";
2662 2691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Replace the current/newest connection error widget. We could also
@@ -2700,77 +2729,71 @@
2700 2729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(f.running) return;
2701 2730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
f.running = true;
2702 2731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat._isBatchLoading = f.isFirstCall;
2703 2732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(true===f.isFirstCall){
2704 2733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
f.isFirstCall = false;
2705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.aPollErr = [];
2734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.pendingOnError = undefined;
2706 2735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.ajaxStart();
2707 2736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.e.viewMessages.classList.add('loading');
2708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- setInterval(
2737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(1) setInterval(
2709 2738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2710 2739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
We manager onerror() results in poll() using a
2711 2740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
stack of error objects and we delay their handling by
2712 2741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a small amount, rather than immediately when the
2713 2742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exception arrives.
2714 2743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- This level of indirection is to work around an inexplicable
2716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- behavior from the F.fetch() connections: timeouts are always
2717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- announced in pairs of an HTTP 0 and something we can
2718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unambiguously identify as a timeout. When that happens, we
2719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ignore the HTTP 0. If, however, an HTTP 0 is seen here
2720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- without an immediately-following timeout, we process
2721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- it. Attempts to squelch the HTTP 0 response at their source,
2722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- in F.fetch(), have led to worse breakage.
2744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ This level of indirection is necessary to be able to
2745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unambiguously identify client-timeout-specific polling
2746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ errors from other errors. Timeouts are always announced in
2747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pairs of an HTTP 0 and something we can unambiguously
2748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ identify as a timeout. When we receive an HTTP 0 we put it
2749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ into this queue. If an ontimeout() call arrives before this
2750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ error is handled, this error is removed from the stack. If,
2751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ however, an HTTP 0 is seen in this stack without an
2752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ accompanying timeout, we handle it from here.
2723 2753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2724 2754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
It's kinda like in the curses C API, where you to match
2725 2755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ALT-X by first getting an ESC event, then an X event, but
2726 2756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
this one is a lot less explicable. (It's almost certainly a
2727 2757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mis-handling bug in F.fetch(), but it has so far eluded my
2728 2758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eyes.)
2729 2759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2730 2760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
()=>{
2731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( Chat.aPollErr.length ){
2732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(Chat.aPollErr.length>1){
2733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- //console.warn('aPollErr',Chat.aPollErr);
2734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(Chat.aPollErr[1].name==='timeout'){
2735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* mysterious pairs of HTTP 0 followed immediately
2736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- by timeout response; ignore the former in that case. */
2737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.aPollErr.shift();
2738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- afterPollFetch(Chat.aPollErr.shift());
2761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( Chat.pendingOnError ){
2762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const x = Chat.pendingOnError;
2763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.pendingOnError = undefined;
2764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ afterPollFetch(x);
2741 2765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2742 2766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2743 2767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1000
2744 2768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
2745 2769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2746 2770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
let nErr = 0;
2747 2771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
F.fetch("chat-poll",{
2748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- timeout: window.location.hostname.match(
2749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "localhost" /*presumably local dev mode*/
2750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ) ? 15000
2751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- : 420 * 1000/*FIXME: get the value from the server*/,
2772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ timeout: Chat.timer.pollTimeout,
2752 2773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
urlParams:{
2753 2774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
name: Chat.mxMsg
2754 2775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2755 2776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
responseType: "json",
2756 2777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
// Disable the ajax start/end handling for this long-polling op:
2757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- beforesend: function(){
2758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- clearPollErrOnWait();
2759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- },
2778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ beforesend: chatPollBeforeSend,
2760 2779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aftersend: function(){
2761 2780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
poll.running = false;
2781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ },
2782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ontimeout: function(err){
2783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.pendingOnError = undefined /*strip preceeding non-timeout error, if any*/;
2784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ afterPollFetch(err);
2762 2785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2763 2786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onerror:function(err){
2764 2787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat._isBatchLoading = false;
2765 2788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(Chat.beVerbose){
2766 2789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
console.error("poll.onerror:",err.name,err.status,JSON.stringify(err));
2767 2790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Chat.aPollErr.push(err);
2791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Chat.pendingOnError = err;
2769 2792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
2770 2793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
onload:function(y){
2771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reportConnectionReestablished('poll.onload', true);
2794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reportConnectionOkay('poll.onload', true);
2772 2795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
newcontent(y);
2773 2796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(Chat._isBatchLoading){
2774 2797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat._isBatchLoading = false;
2775 2798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Chat.updateActiveUserList();
2776 2799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2777 2800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!