From d27f957f82269a8f954a74a847220d5ef10d2c02 Mon Sep 17 00:00:00 2001 From: frtk Date: Wed, 10 Feb 2016 18:48:47 +0100 Subject: [PATCH] v0.0.6 --- client/index.html | 36 +++++++++++++++-- client/js/NPGClient.js | 8 ++++ client/js/socket/SocketIO.js | 77 ++++++++++++++++++++++++++++++++++++ nodePong.js | 8 +++- server/server_core.js | 26 +++++++++++- version.md | 7 ++++ 6 files changed, 156 insertions(+), 6 deletions(-) create mode 100644 client/js/NPGClient.js create mode 100644 client/js/socket/SocketIO.js diff --git a/client/index.html b/client/index.html index 815bb7b..3ceffd1 100644 --- a/client/index.html +++ b/client/index.html @@ -4,10 +4,12 @@ - nodePong - v0.0.1 + nodePong, a multiplayer online pong based on nodejs and socket.io + + @@ -19,10 +21,38 @@ + + + + + diff --git a/client/js/NPGClient.js b/client/js/NPGClient.js new file mode 100644 index 0000000..6649891 --- /dev/null +++ b/client/js/NPGClient.js @@ -0,0 +1,8 @@ +/** + * @file NPGClient.js + * @author frtk + */ + +var NPGClient = { 'version': '' }; + + diff --git a/client/js/socket/SocketIO.js b/client/js/socket/SocketIO.js new file mode 100644 index 0000000..81da11a --- /dev/null +++ b/client/js/socket/SocketIO.js @@ -0,0 +1,77 @@ +/** + * @file SocketIO.js + * @author frtk + */ + +NPGClient.SocketIO = { + + // Connection to server + conn_nAttempts: 0, + conn_IntervalID: 0, + socket: {}, + isConnected: false, + + // start connection loop + initConnectLoop: function() { + var self = this; + console.log(); + self.startConnectLoop(); + }, + // start connection loop + startConnectLoop: function() { + var self = this; + self.conn_IntervalID = setInterval(function() { self.connect(); }, 1500); + }, + // stop connection loop + stopConnectLoop: function() { + var self = this; + clearInterval(self.conn_IntervalID); + self.conn_IntervalID = 0; + self.conn_nAttempts = 0; + }, + // connect socket + connect: function() { + var self = this; + // check for connection + if (self.isConnected) { + return false; + } + // + if (typeof io !== 'object') { + //console.log('[NPGClient.SocketIO] io object is unknown'); + } + if ((typeof self.socket.socket === 'undefined')) { + console.log('[NPGClient.SocketIO] attempting server connection...'); + self.socket = io.connect(); + self.defineSocketMsgs(); + } else if (!self.socket.socket.connected && !self.socket.socket.connecting) { + console.log('[NPGClient.SocketIO] attempting server connection...'); + self.socket.socket.connect(); + } + }, + // Define Socket Messages + defineSocketMsgs: function() { + var self = this; + if (typeof self.socket === 'undefined') { + return false; + } + console.log('[NPGClient.SocketIO] deploying socket object features.'); + // 'connecting' + self.socket.on('connecting', function () { + console.log('[NPGClient.SocketIO] connecting ...'); + }); + // 'connect' + self.socket.on('connect', function() { + console.log('[NPGClient.SocketIO] connected to server'); + self.stopConnectLoop(); + self.isConnected = true; + }); + // 'disconnect' + self.socket.on('disconnect', function() { + console.log('[NPGClient.SocketIO] > Server: socket disconnected.'); + self.startConnectLoop(); + self.isConnected = false; + }); + } + +}; diff --git a/nodePong.js b/nodePong.js index cdfe781..c2a96e8 100644 --- a/nodePong.js +++ b/nodePong.js @@ -11,7 +11,6 @@ var fs = require('fs'); var express = require('express'); var http = require('http'); -var iosocket = require('socket.io'); //--- server app libs & params //var servP = require('./server/server_config.js'); var nPong = require('./server/server_core.js'); @@ -38,13 +37,18 @@ app.use(express.static(__dirname + '/client/')); //--- socket.io nPong.Server.log('$ # registering socket.io service on port ' + config.HTTP.port); -var io = require('socket.io').listen(httpserv, {log: false}); +var io = require('socket.io').listen(httpserv, { log: true } ); +//-- setup server socket handling features +nPong.Server.socketHandling(io); + // nPong.Server.log('$ #####'); + + /* * running nodePong server */ diff --git a/server/server_core.js b/server/server_core.js index 552255e..80d0fdd 100644 --- a/server/server_core.js +++ b/server/server_core.js @@ -37,7 +37,10 @@ var Server = { this.version = s; }, - + //--- setIO(io) + setIO: function(io) { + + }, /* * Server Messages @@ -78,7 +81,28 @@ var Server = { return self.dateToString(new Date()); }, + + /* + * Socket.io handling + */ + //--- + socketHandling: function(io) { + var self = this; + io.sockets.on('connection', function (socket) { + + // + self.log('$ User connected : id=' + socket.id); + + // 'disconnect' + socket.on('disconnect', function () { + self.log('$ User disconnected : id=' + socket.id); + connected = false; + }); + + }); + }, + }; diff --git a/version.md b/version.md index 1a0ed5b..606bf9a 100644 --- a/version.md +++ b/version.md @@ -1,5 +1,12 @@ +### **v0.0.6:** +- focus on socket.io client & server) +- Renamed SocketClient.js to SocketIO.js (files and objects) +- Added SocketIO object (NGPClient lib in /client/js/) +- Implemented socket.io client connection (with loop) => working +- Client side: Corrected bugs of multiple connection attemps and logs +- Server side: moved socket definitions to Server object ### **v0.0.5:**