我正在尝试使用 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
数组赋值,
usernames[username]=username;
为了,
usernames.push(username);
这将解决问题。我已经对此进行了测试并且工作正常。
希望这对您有所帮助!
关于javascript - 套接字 IO 不发送数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002144/