2017-12-27 17 views
0

私はnodeJsで新しく、私の問題の解決策を見つけることができません。ログインインターフェースがあります。2人のユーザーの接続後には警告が表示されません。第2のユーザの接続の前に常に表示される。 どのように私はそれが第二のユーザのログイン後に表示させることができます。 これは私のclient.jsコードです:nodeJsを使用したConnexionクライアント

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 = 'https://gravatar.com/avatar/' + md5(user.mail) + '?s=50'; 
     socket.emit('loged'); 
     users[me.id] = me; 
     io.sockets.emit('newuser', me); 

}); 

}); 

server.listen(5050); 

答えて

0

私は任意のアラートが表示されません私は以下のコードを仮定しているので、あなたはi++によって接続されているユーザ数を確認するか、i--を切断することができますが、コード内のどこでも使用することはできません。あなたのNode.jsスクリプトでalert-nodeを利用する場合、それは単にあなたがあなたのブラウザに含める場合、それは個人的に私が持つEventEmitterを拡張するクラスを作成することになり、プレーン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.com/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); 

を使用しますconsole.logを使用することに注意してくださいそれを維持するのが簡単になるなどの作業をしてください。

関連する問題