javascript - 从 sockjs-node 广播的有效方法?

标签 javascript performance node.js sockjs

我想向连接到我的 sockjs-node 服务器的所有客户端广播消息。

现在我有以下代码

var clients = {};
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
    clients[conn.id] = conn;

    for(key in clients) {
        if(clients.hasOwnProperty(key)) {
            clients[key].write('test');
        }
    }

    conn.on('close', function() {
        delete clients[conn.id];
    });
});

有没有更有效的方法来做到这一点?

也许
var clients = [];
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
    var index = clients.push(conn);

    var lenght = clients.length;
    while(length--) {
        if(clients[length] !== undefined) {
            clients[length].write('test');
        }
    }

    conn.on('close', function() {
        delete clients[index];
    });
});

谢谢

最佳答案

1.)for...in 比常规 for 或 while 慢,不是很多
2.)也可能从对象中获取值比从数组中获取值要慢(因为您需要从字符串中获取地址,但您可以立即从数组索引中计算地址),也不是很多
所以第二个更快。

关于javascript - 从 sockjs-node 广播的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942171/

相关文章:

javascript - Datatables 无法识别行数的 pageLength

javascript - JQuery 如果悬停在任一元素上

java - 使用 java 和 jdom 从大型 csv 文件创建 XML 文件

node.js - nodeJs脚本可以删除自己的文件吗?

javascript - Azure 数据表 JS SDK - 如何设置请求 header - contentType : application/json;odata=nometadata

javascript - 我如何防止玩家发送垃圾邮件移动消息 (Node.js)?

iOS - 使用谓词过滤集的性能

android - BaseAdapter 和 ArrayAdapter 有什么区别?

node.js - 如何在远程 Ubuntu 机器上安装 Node.js

javascript - 外部 Hello World 服务器 Node js