_setupTopicHandlers() {
		// Main protocol handler
		this.node.handle(this.protocol, this._handleProtocolStream.bind(this));
		// File transfer protocol handler
		this.node.handle(`${this.protocol}/file`, this._handleFileStream.bind(this));

		// Protocol message handler
		this.registerTopicHandler(`${this.protocol}/init`, async (data, from, respond) => {
			if (!data || data.protocolName !== this.protocolName) {
				logTE('p2p', `Ignoring peer with incorrect protocol name: ${data?.protocolName}`);
				if (this.peers.has(from)) {
					this._disconnectPeer(from);
				}
				return;
			}
			
			if (compareVersions(data.protocolVersion, this.protocolVersion) < 0) {
				logTE('p2p', `Ignoring peer because of protocol version ${data.protocolVersion} < ${this.protocolVersion}`);
				if (this.peers.has(from)) {
					this._disconnectPeer(from);
				}
				return;
			}
			
			if (from === this.peerId) {
				logT('p2p', 'Try connection to myself, ignore', from);
				return;
			}
			
			// Update peer information
			if (this.peers.has(from)) {
				const peer = this.peers.get(from);
				peer.protocolName = data.protocolName;
				peer.protocolVersion = data.protocolVersion;
				peer[data.protocolName] = true;
				peer.version = data.version;
				peer.info = data.info;

				this.peersProtocol.set(from, peer);
				this.peersProtocolSize++;

				// Create a peer object without stream for logging
				logT('p2p', `${this.protocolName} peer connected`, peer);
				
				// Emit peer event for listeners
				this.events.emit('peer', {
					peer,
					size: this.peersProtocolSize
				});
				
				// Peer exchange (need some time to get publish subscription)
				setTimeout(() => this.emit('peer', this.address(peer)), 5000);
				
				// Add other peers
				if (data.peers && Array.isArray(data.peers) && data.peers.length > 0) {
					data.peers.forEach(peer => this.add(peer));
				}
			}
		}, { direct: true });

		// Peer exchange handler
		this.registerTopicHandler(`${this.protocol}/peer`, (peer) => {
			logT('p2p', 'Got peer exchange', peer);
			this.add(peer, { protocol: true });
		});
	}
Set up handlers for specific topics