Правильный способ использования socket.on в React - PullRequest
0 голосов
/ 19 июня 2020

Я работаю над небольшим проектом, который будет использоваться для сканирования. У меня проблема при работе с сокетами. Я генерирую некоторые события с сервера в al oop.

for(i=0;i<blogs.length;i++){

        socket.emit('crawling',blogs[i]);

        const startTime = Date.now();
        const post = await crawlPost(blogs[i]);
        const endTime = Date.now();

        socket.emit('crawled',blogs[i]);
        socket.emit('timeTaken',{
            time: endTime-startTime,
            blog : blogs[i],
        });
    }

Я хочу прослушивать эти события одно за другим в компоненте реакции, но я не могу этого сделать, код, который я написал для прослушивание событий.

const App = () => {
    const [crawlingBlog, setCrawlingBlog] = useState([]);
    const ENDPOINT = 'localhost:4000';
    socket = io(ENDPOINT);

    useEffect(() => {

      socket.on('crawling' , (blog) => {
        setCrawlingBlog(crawlingBlog.concat(blog))
      })

    },[])
}

1 Ответ

0 голосов
/ 19 июня 2020

вы так обернули сокет на сервере?

module.exports = connectSockets

function connectSockets(io) {
    io.on('connection', socket => {

        for(i=0;i<blogs.length;i++){

        socket.emit('crawling',blogs[i]);

        const startTime = Date.now();
        const post = await crawlPost(blogs[i]);
        const endTime = Date.now();

        socket.emit('crawled',blogs[i]);
        socket.emit('timeTaken',{
            time: endTime-startTime,
            blog : blogs[i],
        });
    }


    })
}
...