From ba6790f54ed3770fdc9aef3200f983d9ba33110c Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Sat, 1 Mar 2014 04:33:00 -0800 Subject: [PATCH] added TCP examples for multiple clients and diconnections --- .../Multi-Client-Broadcast/goodbye-client.js | 43 ++++++++++++++++ .../Multi-Client-Broadcast/hello-client.js | 49 ++++++++++++++++++ .../Multi-Client-Broadcast/world-server.js | 51 +++++++++++++++++++ node-ipc.js | 2 - package.json | 2 +- 5 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 example/TCPSocket/Multi-Client-Broadcast/goodbye-client.js create mode 100644 example/TCPSocket/Multi-Client-Broadcast/hello-client.js create mode 100644 example/TCPSocket/Multi-Client-Broadcast/world-server.js diff --git a/example/TCPSocket/Multi-Client-Broadcast/goodbye-client.js b/example/TCPSocket/Multi-Client-Broadcast/goodbye-client.js new file mode 100644 index 0000000..6dfcaad --- /dev/null +++ b/example/TCPSocket/Multi-Client-Broadcast/goodbye-client.js @@ -0,0 +1,43 @@ +var ipc=require('../../../node-ipc'); + +/***************************************\ + * + * You should start both hello and world + * then you will see them communicating. + * + * *************************************/ + +ipc.config.id = 'goodbye'; +ipc.config.retry= 1500; + +ipc.connectToNet( + 'world', + function(){ + ipc.of.world.on( + 'connect', + function(){ + ipc.log('## connected to world ##'.rainbow, ipc.config.delay); + ipc.of.world.emit( + 'app.message', + { + id : ipc.config.id, + message : 'goodbye' + } + ) + } + ); + ipc.of.world.on( + 'disconnect', + function(){ + ipc.log('disconnected from world'.notice); + } + ); + ipc.of.world.on( + 'kill.connection', + function(data){ + ipc.log('world requested kill.connection'.notice); + ipc.disconnect('world'); + } + ); + } +); \ No newline at end of file diff --git a/example/TCPSocket/Multi-Client-Broadcast/hello-client.js b/example/TCPSocket/Multi-Client-Broadcast/hello-client.js new file mode 100644 index 0000000..8fc4b8f --- /dev/null +++ b/example/TCPSocket/Multi-Client-Broadcast/hello-client.js @@ -0,0 +1,49 @@ +var ipc=require('../../../node-ipc'); + +/***************************************\ + * + * You should start both hello and world + * then you will see them communicating. + * + * *************************************/ + +ipc.config.id = 'hello'; +ipc.config.retry= 1500; + +ipc.connectToNet( + 'world', + function(){ + ipc.of.world.on( + 'connect', + function(){ + ipc.log('## connected to world ##'.rainbow, ipc.config.delay); + ipc.of.world.emit( + 'app.message', + { + id : ipc.config.id, + message : 'hello' + } + ) + } + ); + ipc.of.world.on( + 'disconnect', + function(){ + ipc.log('disconnected from world'.notice); + } + ); + ipc.of.world.on( + 'app.message', + function(data){ + ipc.log('got a message from world : '.debug, data.messgae); + } + ); + ipc.of.world.on( + 'kill.connection', + function(data){ + ipc.log('world requested kill.connection'.notice); + ipc.disconnect('world'); + } + ); + } +); \ No newline at end of file diff --git a/example/TCPSocket/Multi-Client-Broadcast/world-server.js b/example/TCPSocket/Multi-Client-Broadcast/world-server.js new file mode 100644 index 0000000..a550299 --- /dev/null +++ b/example/TCPSocket/Multi-Client-Broadcast/world-server.js @@ -0,0 +1,51 @@ +var ipc=require('../../../node-ipc'); + +/***************************************\ + * + * You should start both hello and world + * then you will see them communicating. + * + * *************************************/ + +ipc.config.id = 'world'; +ipc.config.retry= 1500; + +var messages={ + goodbye:false, + hello:false +} + +ipc.serveNet( + function(){ + ipc.server.on( + 'app.message', + function(data,socket){ + ipc.log('got a message from'.debug, (data.id).variable, (data.message).data); + messages[data.id]=true; + ipc.server.emit( + socket, + 'app.message', + { + id : ipc.config.id, + message : data.message+' world!' + } + ); + + if(messages.hello && messages.goodbye){ + ipc.log('got all required events, telling clients to kill connection'.good); + ipc.server.broadcast( + 'kill.connection', + { + id:ipc.config.id + } + ); + } + } + ); + } +); + +ipc.server.define.listen['app.message']='This event type listens for message strings as value of data key.'; +ipc.server.define.broadcast['kill.connection']='This event is a command to kill connection to this server, the data object will contain the id of this server incase the client needs it'; + +ipc.server.start(); diff --git a/node-ipc.js b/node-ipc.js index 8439afb..9538c1d 100644 --- a/node-ipc.js +++ b/node-ipc.js @@ -157,8 +157,6 @@ function serveNet(host,port,UDPType,callback){ if(UDPType) ipc.server[UDPType]=true; - console.log(callback.toString()) - ipc.server.on( 'start', callback diff --git a/package.json b/package.json index 80efd3d..9962b43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-ipc", - "version": "0.9.9", + "version": "0.9.11", "description": "A nodejs module for local and remote Inter Process Communication (IPC), Neural Networking, and able to facilitate machine learning.", "main": "node-ipc.js", "directories": {