Domains only emit "error" event and are not designed for intercepting all 
event emitters messages but a way to route exception handling code. Try to 
replace "ee.emit('message', 1, 2, 3);" with "throw new Error('blah')" and 
you'll notice it's magically appearing in app.js mainDomain 'error' handler.
The reason this is possible is because each time async function callback is 
about to be executed process.domain is set to corresponding domain and 
try/catch around it calls 'error' handler.
This happens automatically for all core async ( timers, net, files ) but 
you might need to add domains support manually in some other cases ( like 
binary modules + libuv async ) 

On Wednesday, 11 June 2014 08:27:58 UTC+10, dman777 wrote:
>
> I am new to Node.js domains and I am experimenting with them. I am trying 
> to get mainDomain to display a message on database that is successful. 
> Right now, there are no errors and everything runs ok when I start 
> express.js. But the message does not show as it should after a successful 
> database connection. I  can successfully get it to catch event error if I 
> use ee.emit('error') instead of ee.emit('message', 1, 2, 3);. I don't 
> understand why I can't emit ee.emit('message') and have it catch it.
>
> var express = require('express');
> var morgan = require('morgan');
> var fs = require("fs");
> var createDomain = require("domain").create;
> var app = express();
>
> var db = require(__dirname + '/app/data/db.js');
> var mainDomain = new createDomain();
> mainDomain.run(function () { 
>     db.connectDatabase(); 
>     mainDomain.on('message', function(msg) {
>         console.log('yoyoyoyo');
>     });
> });
> mainDomain.run(function () {
>     mainDomain.on('error', function(er) {
>         console.log('error, but oh well', er.message);
>     });
>     var server = app.listen(9000, function() {
>             console.log('Listening on port %d', server.address().port);
>     });
> });
>
>
>
>
> -----------------------------------------------------------------------------------------------------------------------
>
> db.js:
>
>
> var mongoose = require( 'mongoose' );
> var EventEmitter = require('events').EventEmitter;
> var ee = new EventEmitter();
>
> function connectDatabase() {
>     var dbURI = 'mongodb://localhost/database';
>     mongoose.connect(dbURI);
>     mongoose.connection.on('connected', function () {
>         ee.emit('message', 1, 2, 3);
>        // console.log('Mongoose default connection open to ' + dbURI);
>     });
>     mongoose.connection.on('error',function (err) {
>         console.log('Mongoose default connection error: ' + err);
>     });
>     mongoose.connection.on('disconnected', function () {
>         console.log('Mongoose default connection disconnected');
>     });
>     process.on('SIGINT', function() {
>         mongoose.connection.close(function () {
>             console.log('Mongoose default connection disconnected through' 
> +
>                         ' app termination');
>             process.exit(0);
>         });
>     });
> }   
> module.exports.connectDatabase = connectDatabase;
>
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/2fd454e0-c4f2-4abc-8189-4128c23349fa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to