mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
Refactoring socketio so real-time works around username restrictions.
This commit is contained in:
parent
06ec0d1099
commit
e7e8bd88cd
2 changed files with 75 additions and 68 deletions
|
@ -4979,17 +4979,7 @@
|
||||||
}, this));
|
}, this));
|
||||||
|
|
||||||
this.socket.removeAllListeners('feed:update');
|
this.socket.removeAllListeners('feed:update');
|
||||||
this.socket.on('feed:update', _.bind(function(feed_id, message) {
|
this.socket.on('feed:update', _.bind(this.handle_realtime_update, this));
|
||||||
NEWSBLUR.log(['Real-time feed update', feed_id, message]);
|
|
||||||
var feed = this.model.get_feed(feed_id);
|
|
||||||
if (feed && !feed.get('fetched_once')) {
|
|
||||||
this.force_feed_refresh(feed_id);
|
|
||||||
} else {
|
|
||||||
this.feed_unread_count(feed_id, {
|
|
||||||
realtime: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, this));
|
|
||||||
|
|
||||||
this.socket.removeAllListeners('feed:story:new');
|
this.socket.removeAllListeners('feed:story:new');
|
||||||
this.socket.on('feed:story:new', _.bind(function(feed_id, message) {
|
this.socket.on('feed:story:new', _.bind(function(feed_id, message) {
|
||||||
|
@ -5001,7 +4991,53 @@
|
||||||
|
|
||||||
this.socket.removeAllListeners(NEWSBLUR.Globals.username);
|
this.socket.removeAllListeners(NEWSBLUR.Globals.username);
|
||||||
this.socket.removeAllListeners("user:update");
|
this.socket.removeAllListeners("user:update");
|
||||||
this.socket.on('user:update', _.bind(function(username, message) {
|
this.socket.on('user:update', _.bind(this.handle_realtime_update, this));
|
||||||
|
|
||||||
|
|
||||||
|
this.socket.on('disconnect', _.bind(function() {
|
||||||
|
NEWSBLUR.log(["Lost connection to real-time pubsub. Falling back to polling."]);
|
||||||
|
this.flags.feed_refreshing_in_realtime = false;
|
||||||
|
this.setup_feed_refresh();
|
||||||
|
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating every 60 sec'));
|
||||||
|
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error').removeClass('NB-active');
|
||||||
|
this.apply_tipsy_titles();
|
||||||
|
}, this));
|
||||||
|
this.socket.on('error', _.bind(function() {
|
||||||
|
NEWSBLUR.log(["Can't connect to real-time pubsub."]);
|
||||||
|
this.flags.feed_refreshing_in_realtime = false;
|
||||||
|
this.setup_feed_refresh();
|
||||||
|
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating every 60 sec'));
|
||||||
|
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error').removeClass('NB-active');
|
||||||
|
this.apply_tipsy_titles();
|
||||||
|
_.delay(_.bind(this.setup_socket_realtime_unread_counts, this), Math.random()*60*1000);
|
||||||
|
}, this));
|
||||||
|
this.socket.on('reconnect_failed', _.bind(function() {
|
||||||
|
console.log(["Socket.io reconnect failed"]);
|
||||||
|
}, this));
|
||||||
|
this.socket.on('reconnect', _.bind(function() {
|
||||||
|
console.log(["Socket.io reconnected successfully!"]);
|
||||||
|
}, this));
|
||||||
|
this.socket.on('reconnecting', _.bind(function() {
|
||||||
|
console.log(["Socket.io reconnecting..."]);
|
||||||
|
}, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
// this.watch_navigator_online();
|
||||||
|
},
|
||||||
|
|
||||||
|
handle_realtime_update: function (username, message) {
|
||||||
|
if (_.isNumber(username)) {
|
||||||
|
var feed_id = username;
|
||||||
|
NEWSBLUR.log(['Real-time feed update', feed_id, message]);
|
||||||
|
var feed = this.model.get_feed(feed_id);
|
||||||
|
if (feed && !feed.get('fetched_once')) {
|
||||||
|
this.force_feed_refresh(feed_id);
|
||||||
|
} else {
|
||||||
|
this.feed_unread_count(feed_id, {
|
||||||
|
realtime: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
NEWSBLUR.log(['Real-time user update', username, message]);
|
NEWSBLUR.log(['Real-time user update', username, message]);
|
||||||
if (this.flags.social_view) return;
|
if (this.flags.social_view) return;
|
||||||
if (_.string.startsWith(message, 'feed:')) {
|
if (_.string.startsWith(message, 'feed:')) {
|
||||||
|
@ -5041,7 +5077,7 @@
|
||||||
} else if (_.string.startsWith(message, "notification:")) {
|
} else if (_.string.startsWith(message, "notification:")) {
|
||||||
message = message.replace('notification:', '');
|
message = message.replace('notification:', '');
|
||||||
var story_hash = message.slice(0, message.indexOf(','));
|
var story_hash = message.slice(0, message.indexOf(','));
|
||||||
var story_title = message.slice(message.indexOf(',')+1);
|
var story_title = message.slice(message.indexOf(',') + 1);
|
||||||
this.push_notification(story_hash, story_title);
|
this.push_notification(story_hash, story_title);
|
||||||
} else if (_.string.startsWith(message, "search_index_complete:")) {
|
} else if (_.string.startsWith(message, "search_index_complete:")) {
|
||||||
message = message.replace('search_index_complete:', '');
|
message = message.replace('search_index_complete:', '');
|
||||||
|
@ -5057,38 +5093,7 @@
|
||||||
NEWSBLUR.assets.load_feeds();
|
NEWSBLUR.assets.load_feeds();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, this));
|
|
||||||
|
|
||||||
|
|
||||||
this.socket.on('disconnect', _.bind(function() {
|
|
||||||
NEWSBLUR.log(["Lost connection to real-time pubsub. Falling back to polling."]);
|
|
||||||
this.flags.feed_refreshing_in_realtime = false;
|
|
||||||
this.setup_feed_refresh();
|
|
||||||
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating every 60 sec'));
|
|
||||||
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error').removeClass('NB-active');
|
|
||||||
this.apply_tipsy_titles();
|
|
||||||
}, this));
|
|
||||||
this.socket.on('error', _.bind(function() {
|
|
||||||
NEWSBLUR.log(["Can't connect to real-time pubsub."]);
|
|
||||||
this.flags.feed_refreshing_in_realtime = false;
|
|
||||||
this.setup_feed_refresh();
|
|
||||||
// $('.NB-module-content-account-realtime-subtitle').html($.make('b', 'Updating every 60 sec'));
|
|
||||||
$('.NB-module-content-account-realtime').attr('title', 'Updating sites every ' + this.flags.refresh_interval + ' seconds...').addClass('NB-error').removeClass('NB-active');
|
|
||||||
this.apply_tipsy_titles();
|
|
||||||
_.delay(_.bind(this.setup_socket_realtime_unread_counts, this), Math.random()*60*1000);
|
|
||||||
}, this));
|
|
||||||
this.socket.on('reconnect_failed', _.bind(function() {
|
|
||||||
console.log(["Socket.io reconnect failed"]);
|
|
||||||
}, this));
|
|
||||||
this.socket.on('reconnect', _.bind(function() {
|
|
||||||
console.log(["Socket.io reconnected successfully!"]);
|
|
||||||
}, this));
|
|
||||||
this.socket.on('reconnecting', _.bind(function() {
|
|
||||||
console.log(["Socket.io reconnecting..."]);
|
|
||||||
}, this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this.watch_navigator_online();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
watch_navigator_online: function() {
|
watch_navigator_online: function() {
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
# Use the Google Closure Compiler to minify JavaScript
|
# Use the Google Closure Compiler to minify JavaScript
|
||||||
javascript_compressor: closure
|
javascript_compressor: closure
|
||||||
|
compressor_options:
|
||||||
|
language_in: "ECMASCRIPT6"
|
||||||
|
|
||||||
# YUI for CSS (not cssmin)
|
# YUI for CSS (not cssmin)
|
||||||
css_compressor: yui
|
css_compressor: yui
|
||||||
|
|
Loading…
Add table
Reference in a new issue