Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从sockjs节点进行广播的有效方法?_Javascript_Performance_Node.js_Sockjs - Fatal编程技术网

Javascript 从sockjs节点进行广播的有效方法?

Javascript 从sockjs节点进行广播的有效方法?,javascript,performance,node.js,sockjs,Javascript,Performance,Node.js,Sockjs,我想向连接到我的sockjs节点服务器的所有客户端广播消息 现在我有以下代码 var clients = {}; var echo = sockjs.createServer(); echo.on('connection', function(conn) { clients[conn.id] = conn; for(key in clients) { if(clients.hasOwnProperty(key)) { clients[ke

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

现在我有以下代码

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];
    });
});
谢谢你,因为…在一段时间内比常规的慢,不会太多
2.)从对象中获取值可能比从数组中获取值慢(因为您需要从字符串中获取地址,但您可以立即从数组索引中计算地址),也不会太多

所以第二个更快。

过度优化。我怀疑你是否会看到其中的区别。我正在努力在共享服务器上实现快速和低内存。让我们从一个基本问题开始:你是否真的在速度/内存使用方面存在问题?还是你在预先优化(这是万恶之源)?不管是什么,这种优化都不会显著提高性能。引用conn对象而不是克隆它可能是个好主意。我不知道该怎么做。我建议使用它来支持广播。如果你愿意,我可以举个例子