...それぞれに2-4プレーヤー付きの客室、数千を持っ上を目指しています、すべてのsocket.ioは、リスト上でループしているやっています各ソケットにパケットを送信します(下記のコードを参照)。
あなたのコードが似たようなことをしている場合、パフォーマンスは類似している可能性があります。
クラスタリングで使用されるRedisアダプタなどのカスタムアダプタを使用している場合は、異なるサーバーに接続されているユーザーにブロードキャストするロジックが、あなた自身のブロードキャストを行う場合は、自分で実装する必要があるかもしれません。
はここ.broadcast()
のsocket.ioアダプタのバージョンです:
Adapter.prototype.broadcast = function(packet, opts){
var rooms = opts.rooms || [];
var except = opts.except || [];
var flags = opts.flags || {};
var packetOpts = {
preEncoded: true,
volatile: flags.volatile,
compress: flags.compress
};
var ids = {};
var self = this;
var socket;
packet.nsp = this.nsp.name;
this.encoder.encode(packet, function(encodedPackets) {
if (rooms.length) {
for (var i = 0; i < rooms.length; i++) {
var room = self.rooms[rooms[i]];
if (!room) continue;
var sockets = room.sockets;
for (var id in sockets) {
if (sockets.hasOwnProperty(id)) {
if (ids[id] || ~except.indexOf(id)) continue;
socket = self.nsp.connected[id];
if (socket) {
socket.packet(encodedPackets, packetOpts);
ids[id] = true;
}
}
}
}
} else {
for (var id in self.sids) {
if (self.sids.hasOwnProperty(id)) {
if (~except.indexOf(id)) continue;
socket = self.nsp.connected[id];
if (socket) socket.packet(encodedPackets, packetOpts);
}
}
}
});
};
恐ろしい、どうもありがとう:) – trueicecold