Предположительно, отправкой этого действия является обновление хранилища, которое обновляет реквизиты, что снова вызывает componentDidUpdate. Обычный способ обойти это - иметь какое-то условие, которое в конечном итоге останавливает повторную отправку действия, что похоже на то, что вы пытаетесь сделать, но это условие всегда оценивается как true. Не зная точно, что означают части этого условия, я бы предположил, что проблема в чем-то:
(sockOpen !== prevProps.sockOpen || sockOpen)
всякий раз, когда sockOpen верен, отправка будет выполняться, и вы будете зацикливаться. Всякий раз, когда значение sockOpen отличается от предыдущего обновления, оно также будет зациклено. Таким образом, даже если sockOpen ложный, он все равно будет зациклен, если sockOpen был правдивым в прошлый раз. Это означает, что если sockOpen всегда правдив, цикл становится бесконечным, поскольку, даже если что-то и делает sockOpen falsey, это было правдой в последнем цикле, а первая часть этого предложения или условия истинна.
Вам необходимо выяснить, в каких условиях эта отправка НЕ должна происходить, установить условия условного соответствия, и, что самое важное, убедиться, что этот набор условий возможен!