whole_func_string: function _attachRoomsSocketIO() {
          if (!io) return;
  
          // middleware
          io.use((socket, next) => {
              const {
                  node_id: nodeId,
              } = socket.handshake.query;
  
              if (nodeId) {
                  logger.info(`node ${nodeId} joining room on connect`);
                  socket.join(nodeId);
              }
  
              return next();
          });
      }
func_code_string: function _attachRoomsSocketIO() {
          if (!io) return;
  
          // middleware
          io.use((socket, next) => {
              const {
                  node_id: nodeId,
              } = socket.handshake.query;
  
              if (nodeId) {
                  logger.info(`node ${nodeId} joining room on connect`);
                  socket.join(nodeId);
              }
  
              return next();
          });
      }
func_documentation_string: join rooms before on connect to avoid race conditions