From a1f3c5cbdbd68fa9dcaf72e74518d546ab981f47 Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Sat, 1 Mar 2014 14:31:40 -0800 Subject: [PATCH] when ipc.log is run, it will outomatically convert objects to strings --- .../Multi-Client-Broadcast/goodbye-client.js | 48 ++++++++++++++ .../Multi-Client-Broadcast/hello-client.js | 48 ++++++++++++++ .../Multi-Client-Broadcast/world-server.js | 63 +++++++++++++++++++ example/UDPSocket/basic/hello-client.js | 8 ++- example/UDPSocket/basic/world-server.js | 23 +++++-- node-ipc.js | 13 +++- 6 files changed, 193 insertions(+), 10 deletions(-) create mode 100644 example/UDPSocket/Multi-Client-Broadcast/goodbye-client.js create mode 100644 example/UDPSocket/Multi-Client-Broadcast/hello-client.js create mode 100644 example/UDPSocket/Multi-Client-Broadcast/world-server.js diff --git a/example/UDPSocket/Multi-Client-Broadcast/goodbye-client.js b/example/UDPSocket/Multi-Client-Broadcast/goodbye-client.js new file mode 100644 index 0000000..27697a7 --- /dev/null +++ b/example/UDPSocket/Multi-Client-Broadcast/goodbye-client.js @@ -0,0 +1,48 @@ +var ipc=require('../../../node-ipc'); + +/***************************************\ + * + * Since there is no client relationship + * with UDP sockets sockets are not kept + * open. + * + * This means the order sockets are opened + * is important. + * + * Start World first. Then you can start + * hello or goodbye in any order you + * choose. + * + * *************************************/ + +ipc.config.id = 'goodbye'; +ipc.config.retry= 1500; + +ipc.serveNet( + 8002, //we set the port here because the hello client and world server are already using the default of 8000 and the port 8001. So we can not bind to those while hello and world are connected to them. + 'udp4', + function(){ + ipc.server.on( + 'message', + function(data){ + ipc.log('got Data'); + ipc.log('got a message from '.debug, data.id.variable ,' : '.debug, data.message.data); + } + ); + ipc.server.emit( + { + address : 'localhost', + port : ipc.config.networkPort + }, + 'message', + { + id : ipc.config.id, + message : 'Goodbye' + } + ); + } +); + +ipc.server.define.listen.message='This event type listens for message strings as value of data key.'; + +ipc.server.start(); \ No newline at end of file diff --git a/example/UDPSocket/Multi-Client-Broadcast/hello-client.js b/example/UDPSocket/Multi-Client-Broadcast/hello-client.js new file mode 100644 index 0000000..9408740 --- /dev/null +++ b/example/UDPSocket/Multi-Client-Broadcast/hello-client.js @@ -0,0 +1,48 @@ +var ipc=require('../../../node-ipc'); + +/***************************************\ + * + * Since there is no client relationship + * with UDP sockets sockets are not kept + * open. + * + * This means the order sockets are opened + * is important. + * + * Start World first. Then you can start + * hello or goodbye in any order you + * choose. + * + * *************************************/ + +ipc.config.id = 'hello'; +ipc.config.retry= 1500; + +ipc.serveNet( + 8001, //we set the port here because the world server is already using the default of 8000. So we can not bind to 8000 while world is using it. + 'udp4', + function(){ + ipc.server.on( + 'message', + function(data){ + ipc.log('got Data'); + ipc.log('got a message from '.debug, data.id.variable ,' : '.debug, data.message.data); + } + ); + ipc.server.emit( + { + address : 'localhost', + port : ipc.config.networkPort + }, + 'message', + { + id : ipc.config.id, + message : 'Hello' + } + ); + } +); + +ipc.server.define.listen.message='This event type listens for message strings as value of data key.'; + +ipc.server.start(); \ No newline at end of file diff --git a/example/UDPSocket/Multi-Client-Broadcast/world-server.js b/example/UDPSocket/Multi-Client-Broadcast/world-server.js new file mode 100644 index 0000000..80f5023 --- /dev/null +++ b/example/UDPSocket/Multi-Client-Broadcast/world-server.js @@ -0,0 +1,63 @@ +var ipc=require('../../../node-ipc'); + +/***************************************\ + * + * Since there is no client relationship + * with UDP sockets sockets are not kept + * open. + * + * This means the order sockets are opened + * is important. + * + * Start World first. Then you can start + * hello or goodbye in any order you + * choose. + * + * *************************************/ + +ipc.config.id = 'world'; +ipc.config.retry= 1500; + +var messages={ + goodbye:false, + hello:false +} + +ipc.serveNet( + 'udp4', + function(){ + console.log(123); + ipc.server.on( + 'message', + function(data,socket){ + ipc.log('got a message from '.debug, data.id.variable ,' : '.debug, data.message.data); + messages[data.id]=true; + ipc.server.emit( + socket, + 'message', + { + id : ipc.config.id, + message : data.message+' world!' + } + ); + + if(messages.hello && messages.goodbye){ + ipc.log('got all required events, telling evryone how muchg I am loved!'.good); + ipc.server.broadcast( + 'message', + { + id : ipc.config.id, + message : 'Everybody Loves The World! Got messages from hello and goodbye!' + } + ); + } + } + ); + + console.log(ipc.server); + } +); + +ipc.server.define.listen.message='This event type listens for message strings as value of data key.'; + +ipc.server.start(); \ No newline at end of file diff --git a/example/UDPSocket/basic/hello-client.js b/example/UDPSocket/basic/hello-client.js index 7e18482..88e33fb 100644 --- a/example/UDPSocket/basic/hello-client.js +++ b/example/UDPSocket/basic/hello-client.js @@ -13,6 +13,10 @@ var ipc=require('../../../node-ipc'); * machine, unlike TCP or Unix Sockts * which can share on the same machine. * + * Since there is no open client server + * relationship, you should start world + * first and then hello. + * * *************************************/ ipc.config.id = 'hello'; @@ -26,7 +30,7 @@ ipc.serveNet( 'message', function(data){ ipc.log('got Data'); - ipc.log('got a message from '.debug, data.from.variable ,' : '.debug, data.message.variable); + ipc.log('got a message from '.debug, data.id.variable ,' : '.debug, data.message.data); } ); ipc.server.emit( @@ -36,7 +40,7 @@ ipc.serveNet( }, 'message', { - from : ipc.config.id, + id : ipc.config.id, message : 'Hello' } ); diff --git a/example/UDPSocket/basic/world-server.js b/example/UDPSocket/basic/world-server.js index b5e3f1e..0d5a7f0 100644 --- a/example/UDPSocket/basic/world-server.js +++ b/example/UDPSocket/basic/world-server.js @@ -2,10 +2,22 @@ var ipc=require('../../../node-ipc'); /***************************************\ * - * You should start both hello and world - * then you will see them communicating. + * UDP Client is really a UDP server * - * *************************************/ + * Dedicated UDP sockets on the same + * machine can not be bound to in the + * traditional client/server method + * + * Every UDP socket is it's own UDP server + * And so must have a unique port on its + * machine, unlike TCP or Unix Sockts + * which can share on the same machine. + * + * Since there is no open client server + * relationship, you should start world + * first and then hello. + * + * *************************************// ipc.config.id = 'world'; ipc.config.retry= 1500; @@ -17,19 +29,18 @@ ipc.serveNet( ipc.server.on( 'message', function(data,socket){ - ipc.log('got a message from '.debug, data.from.variable ,' : '.debug, data.message.variable); + ipc.log('got a message from '.debug, data.id.variable ,' : '.debug, data.message.data); ipc.server.emit( socket, 'message', { - from : ipc.config.id, + id : ipc.config.id, message : data.message+' world!' } ); } ); - console.log(ipc.server); } ); diff --git a/node-ipc.js b/node-ipc.js index 9538c1d..59ec06b 100644 --- a/node-ipc.js +++ b/node-ipc.js @@ -44,9 +44,18 @@ var ipc = { function log(){ if(ipc.config.silent) return; - + + var args=Array.prototype.slice.call(arguments); + + for(var i=0, count=args.length; i