if(socketRef.current && socketRef.current.readyState === 1 && message)
. Много с сокетами в реакте не работал, но мне кажется что это плохой код. Компонент может ререндериться несколько раз, и сокет будет дергать на каждом ререндере. Хотя бы добавить проверку в первом эффекте что реф пустой.