Hi there, I am a newbie at node.js and expressjs
I am currently writing a multiplayter client / server and i have a problem which is as follows. User requests page. Server sends page to client and stores the socket id in a form. The user then posts their username along with the socket id back to the server the server then sets the username for the socket id. The problem being that when i post back to the server, the socket disconnects. What am i doing wrong. I have cut and pasted the code below for someone to pour throught. I appreciate any help. ------- CLIENT ------------- <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script src="http://192.168.2.11:81/socket.io/socket.io.js"></script> <script> var clientsocketid = ''; var socket = io.connect('http://127.0.0.1:81'); socket.on('sendSocketIdFromServer', function (data) { clientsocketid = data.socketid; document.getElementById('hdClientId').value = clientsocketid; socket.emit('addNewClientOnServer', { clientid: clientsocketid }); //document.write('Client received data from server ' + data.hello); //console.log(); // alert('server called client news function. Client now calling my other event function'); // socket.emit('my other event', { my: 'data' }); }); socket.on('serverupdatedname', function (data) { alert("server updated name to " + data.name); }); function EmitUpdateUsername() { // get the username var uname = document.getElementById('username').value; socket.emit('updateusername', { clientid: clientsocketid, username: uname }); return true; } </script> </head> <body> <form method="post" action="/"> Username : <input type="text" name="username"id="username" /><br /> Socket Id : <input type="text" id="hdClientId" name="hdClientId" value=""/> <input type="submit" value="Submit" "/> <!-- onclick="EmitUpdateUsername() -- /> </form> </body> </html> ------- SERVER ------ var socketioport = 81; var httprequestport = 8001; var maxclients = 3; var clientArray = new Array(); var express = require('express'), app = express(); var io = require('socket.io').listen(app) var fs = require('fs') // ensure that form variables get parsed correctly app.use(express.bodyParser()); // Handle GET requests on httprequestport app.get('/', function (req, res) { res.header("Connection", "keep-alive"); res.sendfile(__dirname + '/client.html'); }); // Handle POST requests on httprequestport app.post('/', function (req, res) { var username = req.body.username; var clientid = req.body.hdClientId; // update the player player information UpdatePlayerUserName(clientid, username); res.send("hello " + username); // console.log("<><><><<> Number of clients in client list " + clientArray.length); io.sockets.emit('serverupdatedname', { name: username }); }); app.listen(httprequestport); var io = require('socket.io').listen(socketioport); io.set('log level', 1); io.sockets.on('connection', function (socket) { clientArray.push({ socketid: socket.id, username : 'Anonymous' }); logger('Client connected ID : ' + socket.id); socket.emit('sendSocketIdFromServer', { socketid: socket.id }); socket.on('addNewClientOnServer', function (data) { logger("Registering new player on server " + data.clientid); }); socket.on('updateusername', function (data) { UpdatePlayerUserName(data.clientid,data.username); }); socket.on('disconnect', function (data) { // get the position of the client in the array and remove var clientArrayPosition = GetClientIndexPosition(socket.id); RemoveClientFromArray(clientArrayPosition); logger("Client diconnected ID : " + socket.id); }); }); console.log("====================== SERVER STARTING ======================"); console.log("------ call http://127.0.0.1:8001/ "); // Put a friendly message on the terminal logger("Socket.io server on port " + socketioport ); logger("Web server on port " + httprequestport ); function logger(data) { console.log(">>>>>> " + data); } function UpdatePlayerUserName(clientid, username) { var clientarrayposition = GetClientIndexPosition(clientid); logger("UpdatePlayerUserName " + clientid + "from " + clientArray[clientarrayposition].username + " to " + username); clientArray[clientarrayposition].username = username; } function GetClientIndexPosition(socketid) { if (clientArray != null) { var index = -1; for (counter = 0; counter < clientArray.length; counter++) { if (clientArray[counter].socketid == socketid) { index = counter; break; } } } return index; } function RemoveClientFromArray(indexpos) { if (indexpos >= 0) { //logger("ClientArray cleanup for id " + clientArray[indexpos].socketid); clientArray.splice(indexpos, 1); } } -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: 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 post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
