javascript - 套接字 IO 不发送数组

标签 javascript html socket.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 数组赋值,

usernames[username]=username;

为了,

usernames.push(username);

这将解决问题。我已经对此进行了测试并且工作正常。

希望这对您有所帮助!

关于javascript - 套接字 IO 不发送数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002144/

相关文章:

javascript - 在 jQuery UI 自动完成中使用 if 语句

javascript - 使用 JavaScript 调整文本大小

javascript - 使用node.js时包含外部js

javascript - 页面大于屏幕高度时的粘性页脚

javascript - 奇怪的 setTimeout 行为 Javascript

javascript - 主路由器在路由 ""末尾附加一个 #,导致 dom 引用 anchor 在 Backbone/Require 应用程序中不起作用

javascript - 如何在循环中提交没有提交按钮的选择菜单?

javascript - 作业帮助 : Returning a value in JavaScript?

node.js - 登录后如何连接到socket - JWT

javascript - node.js/socket.io如何分离html的javascript?