2016-10-12 11 views
2

を送信しません:ここ は、サーバー側のコードです:ソケットIOは私がsocket.ioとオンラインすべてのユーザー名を表示しようとしています配列

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

    app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
    }); 
var send="dsf"; 
var usernames=[]; 
var users=0; 
io.on('connection', function(socket){ 
users++; 
    console.log(users); 
io.emit("online",users); 
socket.on("new",function(username) 
{ 
    console.log(username+"is connected"); 
    socket.username=username; 
    usernames[username]=username; 
    console.log(usernames); 
    io.emit("users", 
    {total: users, 
    names:usernames}); 
    } 

); 

     socket.on('disconnect' ,function(){ 
      users--; 
     console.log(users); 

      }); 
     }); 


      http.listen(3000, function(){ 
      console.log('listening on *:3000'); 
     }); 

そしてここでは、クライアント側である:

<script> 
var socket = io(); 
$(document).ready(function(){ 
var name=prompt("What is your name?",""); 
if (name!="") 
{ 
socket.emit("new",name); 
} 
     socket.on("online",function(users) 
{ 
alert(users); 
}) 
socket.on("users",function(usernames) 
{ 
alert(usernames.names.length); 
}); 
    }); 
</script> 

私が望むのは、ユーザーがログインしたときに接続されているすべてのユーザー名を表示することです。接続されているすべてのユーザー名を含むusernames配列を送信できません(切断時にユーザーを削除する必要がありますが、終了)

+0

'alert'文の代わりに' console.log(ユーザ名) 'を使用するとどうなりますか? –

+0

また、 'index.html'コードも投稿できますか? –

+0

@DavidR解決策を見つけましたか? – tony3243

答えて

0

あなたは

問題を解決します
usernames.push(username); 

usernames[username]=username; 

、からusernames配列の割り当てを変更する必要があります。私はこれをテストし、正常に動作しています。

希望すると便利です。

0

 <!doctype html> 
 
<html> 
 
    <head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
<script src="/socket.io/socket.io.js"></script> 
 
<script> 
 
var socket = io(); 
 
$(document).ready(function(){ 
 
var name=prompt("What is your name?",""); 
 
if (name!="") 
 
{ 
 
socket.emit("new",name); 
 
} 
 
socket.on("online",function(users) 
 
{ 
 
alert(users); 
 
}) 
 
socket.on("users",function(usernames) 
 
{ 
 
alert(usernames.names.length); 
 
}); 
 
    }); 
 
</script> 
 
    <title>Socket.IO chat</title> 
 
    <style> 
 
     * { margin: 0; padding: 0; box-sizing: border-box; } 
 
     body { font: 13px Helvetica, Arial; } 
 
     form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; } 
 
     form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; } 
 
     form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; } 
 
     #messages { list-style-type: none; margin: 0; padding: 0; } 
 
     #messages li { padding: 5px 10px; } 
 
     #messages li:nth-child(odd) { background: #eee; } 
 
    </style> 
 
    </head> 
 
    <body> 
 
    <ul id="messages"></ul> 
 
    <form action=""> 
 
     <input id="m" autocomplete="off" /><button>Send</button> 
 
    </form> 
 
    </body> 
 
</html> 
 
</html> 
 
</html>

0
var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 
var send="dsf"; 
var usernames=[]; 
var users=0; 
io.on('connection', function(socket){ 
    users++; 
     console.log(users); 
    io.emit("online",users); 
    socket.on("new",function(username) 
    { 
    console.log(username+"is connected"); 
    socket.username=username; 
    usernames.push(username); 
    console.log(usernames); 
    } 
    ); 

socket.on('disconnect' ,function(){ 
users--; 
console.log(users); 

}); 
}); 


http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 
関連する問題