Stop livedata from depending on routepolicy.

That brought in all of webapp, which only works on "type: traditional" targets,
not server-only.

(We really should split the Node DDP Client code from the Node DDP Server code
instead.)

(Maybe routepolicy should just be part of webapp, or webapp should depend on
routepolicy? It's awkward to need to list it separately in various places...)
This commit is contained in:
David Glasser
2013-05-14 20:13:55 -07:00
parent 5be28a3eaa
commit d156f080af
3 changed files with 16 additions and 13 deletions

View File

@@ -10,22 +10,20 @@ Package.on_use(function (api) {
api.use(['check', 'random', 'ejson', 'json', 'underscore', 'deps', 'logging'],
['client', 'server']);
// XXX we do NOT require webapp here, because it's OK to use this package on a
// server architecture without making a server (in order to do
// server-to-server DDP as a client). So if you want to provide a DDP server,
// you need to use webapp before you use livedata.
// XXX we do NOT require webapp or routepolicy here, because it's OK to use
// this package on a server architecture without making a server (in order to
// do server-to-server DDP as a client). So if you want to provide a DDP
// server, you need to use webapp before you use livedata.
// Transport
api.use('reload', 'client');
api.use('routepolicy', 'server');
api.add_files(['sockjs-0.3.4.js',
'stream_client_sockjs.js'], 'client');
api.add_files('stream_client_nodejs.js', 'server');
api.add_files('stream_client_common.js', ['client', 'server']);
api.add_files('stream_server.js', 'server');
// livedata_connection.js uses a Minimongo collection internally to
// manage the current set of subscriptions.
// we depend on LocalCollection._diffObjects and ._applyChanges.
api.use('minimongo', ['client', 'server']);
api.add_files('writefence.js', 'server');

View File

@@ -1,5 +1,3 @@
Meteor._routePolicy.declare('/sockjs/', 'network');
// unique id for this instantiation of the server. If this changes
// between client reconnects, the client will reload. You can set the
// environment variable "SERVER_ID" to control this. For example, if
@@ -14,10 +12,16 @@ Meteor._DdpStreamServer = function () {
self.registration_callbacks = [];
self.open_sockets = [];
self.prefix = '/sockjs';
// We don't depend directly on routepolicy because we don't want to pull in
// webapp stuff if we're just doing server-to-server DDP as a client.
if (Meteor._routePolicy)
Meteor._routePolicy.declare(self.prefix + '/', 'network');
// set up sockjs
var sockjs = Npm.require('sockjs');
self.server = sockjs.createServer({
prefix: '/sockjs', log: function(){},
prefix: self.prefix, log: function(){},
// this is the default, but we code it explicitly because we depend
// on it in stream_client:HEARTBEAT_TIMEOUT
heartbeat_delay: 25000,
@@ -77,6 +81,7 @@ _.extend(Meteor._DdpStreamServer.prototype, {
// Redirect /websocket to /sockjs/websocket in order to not expose
// sockjs to clients that want to use raw websockets
_redirectWebsocketEndpoint: function() {
var self = this;
// Unfortunately we can't use a connect middleware here since
// sockjs installs itself prior to all existing listeners
// (meaning prior to any connect middlewares) so we need to take
@@ -95,7 +100,7 @@ _.extend(Meteor._DdpStreamServer.prototype, {
if (request.url === '/websocket' ||
request.url === '/websocket/')
request.url = '/sockjs/websocket';
request.url = self.prefix + '/websocket';
_.each(oldAppListeners, function(oldListener) {
oldListener.apply(app, args);

View File

@@ -1479,8 +1479,8 @@ _.extend(Package.prototype, {
var names = _.union(
// standard client packages for the classic meteor stack.
// XXX remove and make everyone explicitly declare all dependencies
['meteor', 'webapp', 'deps', 'session', 'livedata', 'mongo-livedata',
'spark', 'templating', 'startup', 'past', 'check'],
['meteor', 'webapp', 'routepolicy', 'deps', 'session', 'livedata',
'mongo-livedata', 'spark', 'templating', 'startup', 'past', 'check'],
project.get_packages(appDir));
var arch = sliceName === "server" ? "native" : "browser";