Javascript 从sockjs节点进行广播的有效方法?
我想向连接到我的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
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对象而不是克隆它可能是个好主意。我不知道该怎么做。我建议使用它来支持广播。如果你愿意,我可以举个例子