sendGossipRequest() {
		const list = this.nodes.toArray();
		if (!list || list.length <= 1) return;

		let packet = {
			online: {},
			offline: {}
		};

		let onlineList = [];
		let offlineList = [];

		list.forEach(node => {
			if (!node.available) {
				if (node.seq > 0) {
					packet.offline[node.id] = node.seq;
				}
				offlineList.push(node);
			} else {
				packet.online[node.id] = [node.seq, node.cpuSeq || 0, node.cpu || 0];

				if (!node.local) onlineList.push(node);
			}
		});

		/* istanbul ignore next */
		if (Object.keys(packet.offline).length == 0) delete packet.offline;

		/* istanbul ignore next */
		if (Object.keys(packet.online).length == 0) delete packet.online;

		if (onlineList.length > 0) {
			// Send gossip message to a live endpoint
			this.sendGossipToRandomEndpoint(packet, onlineList);
		}

		if (offlineList.length > 0) {
			const ratio = offlineList.length / (onlineList.length + 1);

			// Random number between 0.0 and 1.0
			if (ratio >= 1 || Math.random() < ratio) {
				// Send gossip message to an offline endpoint
				this.sendGossipToRandomEndpoint(packet, offlineList);
			}
		}
	}
Create and send a Gossip request packet