2014-08-10 3 views
0

Я программирую чат-приложение, используя socket.io и express 4. Всякий раз, когда пользователь регистрируется с login.html (клиент). Сервер должен помнить его имя и общаться с человеком в Интернете. Но в моем случае он просто помнит имя, которое позднее вошло в систему (предположим, что я сначала вхожу в систему от Джона и Рона, потом просто помнит Рона). Пожалуйста, помогите я совершенно новой для node.jssocket.io и экспресс-сессии

var express = require('express') 
, app = express() 
, http = require('http') 
, server = http.createServer(app) 
, Twit = require('twit') 
, io = require('socket.io').listen(server) 
, os = require('os') 
, open = require('open') 
, bodyParser = require('body-parser') 
, mysql = require("mysql"); 

server.listen(9383,'192.168.1.3'); 

app.use(bodyParser.urlencoded({ extended: false })); 
var name; 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/login.html'); 
}); 

app.post('/valid', function (req, res) { 
    console.log("hello"); 
    console.log(req.body.pass); 
    var username=req.body.email; 
    var password=req.body.pass; 

    var connection = mysql.createConnection({ 
     "hostname": "localhost", 
     "user": "root", 
     "password": "vk123", 
     "database": "login" 
    }); 

    connection.connect(); 

//Verifying whether person exist if exist it gets its name. 

    connection.query('SELECT * FROM id WHERE email=? AND password=?', [username,password], function(err, rows){ 

     if (err){ 
     throw err; 
     }else{ 
     for (var i in rows) { 
      console.log('name: ', rows[i].name); 
      name=rows[i].name; 
      res.redirect('http://192.168.1.3:9383/chat.html'); 

     } 
     } 

    }); 

    connection.end(); 
}); 

// It is obtaining message from client and sending back message and name. 

io.sockets.on('connection', function(socket){ 
    socket.on('chat message', function(msg){ 
    var chatmsg=[]; 
    console.log(name); 
    console.log(msg); 
    chatmsg.push({chatname:name, msgtext:msg}); 
    console.log('message: ' +chatmsg[0].chatname); 
    io.emit('chat message',chatmsg); 
    }); 
}); 

ответ

0

Вы должны читать на Javascript Переменные объема (http://msdn.microsoft.com/en-us/library/ie/bzt2dkta(v=vs.94).aspx).

Ваша переменная «name» определяется как глобальная переменная, поэтому она перезаписывается.

+0

Я знаю это; как я могу заставить его работать для моего кода? – Paras