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.


Reply via email to