最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Connexion客户端与nodeJs

IT培训 admin 4浏览 0评论

Connexion客户端与nodeJs

我是nodeJs的新手,我找不到我的问题的解决方案。我有一个登录界面我不会在2个用户连接后显示警报。我的问题是警报始终显示在连接之前第二个用户。如何在第二个用户登录后显示:这是我的client.js代码:

 var socket = io.connect('http://localhost:5050');
 $('#loginform').submit(function(event){
        event.preventDefault();

        socket.emit('login' , {
            username : $('#username').val(),
            mail     : $('#mail').val()

        })
    });
    socket.on('loged' , function(){

       $('#login').fadeOut();

});

    socket.on('newuser' , function(user){
        $('#users').append('<img src="' + user.avatar + '">');
    })  

我的代码server.js

    var http = require('http');
var fs = require('fs');
var md5 = require('MD5');
var alert=require('alert-node');

var server = http.createServer(function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.end(content);
       });
});

var io = require('socket.io').listen(server);
var users = {};
var i=0;

io.sockets.on('connection', function (socket,user) {
    var me;
    console.log('new user is connected');


for (k in users) {

        socket.emit('newuser' , users[k]);
    }
socket.on('login' , function(user){

       me=user;
        me.id=user.mail.replace('@','-').replace('.','-');
        me.avatar = '/' + md5(user.mail) + '?s=50';
        socket.emit('loged');
        users[me.id] = me;
         io.sockets.emit('newuser', me);

});

}); 

server.listen(5050);
回答如下:

我没有在你的代码上看到任何警报,所以我假设如下,你可以通过i++或断开i--检查有多少用户连接,但你不在代码中的任何地方使用它,在这种情况下我使用Map存储用户。请注意,如果您在Node.js脚本中使用alert-node,它将只使用console.log,如果您在浏览器中包含它将使用普通的alert所以..

const http = require('http');
const fs = require('fs');
const md5 = require('MD5');
const alert=require('alert-node');

var server = http.createServer(function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.end(content);
   });
});

var io = require('socket.io').listen(server);
var users = new Map();

io.sockets.on('connection', function (socket,user) {
    console.log('new user is connected');
    for (k in users) {
        socket.emit('newuser' , users[k]);
    }
    socket.on('login' , function(user){
        let me = user;
        me.id=user.mail.replace('@','-').replace('.','-');
        me.avatar = 'https://gravatar/avatar/' + md5(me.mail) + '?s=50';
        users.set(me.id,me)
        io.sockets.emit('newuser', me);
        socket.emit('loged');
        if(users.size === 2){
            // notify that they are two users connected?
        }
    });

});

server.listen(5050);

我个人会创建一个扩展EventEmitter的类,并使用它更容易维护等等。

Connexion客户端与nodeJs

我是nodeJs的新手,我找不到我的问题的解决方案。我有一个登录界面我不会在2个用户连接后显示警报。我的问题是警报始终显示在连接之前第二个用户。如何在第二个用户登录后显示:这是我的client.js代码:

 var socket = io.connect('http://localhost:5050');
 $('#loginform').submit(function(event){
        event.preventDefault();

        socket.emit('login' , {
            username : $('#username').val(),
            mail     : $('#mail').val()

        })
    });
    socket.on('loged' , function(){

       $('#login').fadeOut();

});

    socket.on('newuser' , function(user){
        $('#users').append('<img src="' + user.avatar + '">');
    })  

我的代码server.js

    var http = require('http');
var fs = require('fs');
var md5 = require('MD5');
var alert=require('alert-node');

var server = http.createServer(function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.end(content);
       });
});

var io = require('socket.io').listen(server);
var users = {};
var i=0;

io.sockets.on('connection', function (socket,user) {
    var me;
    console.log('new user is connected');


for (k in users) {

        socket.emit('newuser' , users[k]);
    }
socket.on('login' , function(user){

       me=user;
        me.id=user.mail.replace('@','-').replace('.','-');
        me.avatar = '/' + md5(user.mail) + '?s=50';
        socket.emit('loged');
        users[me.id] = me;
         io.sockets.emit('newuser', me);

});

}); 

server.listen(5050);
回答如下:

我没有在你的代码上看到任何警报,所以我假设如下,你可以通过i++或断开i--检查有多少用户连接,但你不在代码中的任何地方使用它,在这种情况下我使用Map存储用户。请注意,如果您在Node.js脚本中使用alert-node,它将只使用console.log,如果您在浏览器中包含它将使用普通的alert所以..

const http = require('http');
const fs = require('fs');
const md5 = require('MD5');
const alert=require('alert-node');

var server = http.createServer(function(req, res) {
    fs.readFile('./index.html', 'utf-8', function(error, content) {
        res.writeHead(200, {"Content-Type": "text/html"});
        res.end(content);
   });
});

var io = require('socket.io').listen(server);
var users = new Map();

io.sockets.on('connection', function (socket,user) {
    console.log('new user is connected');
    for (k in users) {
        socket.emit('newuser' , users[k]);
    }
    socket.on('login' , function(user){
        let me = user;
        me.id=user.mail.replace('@','-').replace('.','-');
        me.avatar = 'https://gravatar/avatar/' + md5(me.mail) + '?s=50';
        users.set(me.id,me)
        io.sockets.emit('newuser', me);
        socket.emit('loged');
        if(users.size === 2){
            // notify that they are two users connected?
        }
    });

});

server.listen(5050);

我个人会创建一个扩展EventEmitter的类,并使用它更容易维护等等。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论