Прослушивание сокета парусов в реакции

Я пытаюсь прослушать изменения из сокета Sails во внешнем интерфейсе, используя реакцию.

Сервер прослушивает изменения в коллекции MongoDB и взрывает изменения:

      // Setting up connection to MongoDB
const RTPEntryDB = sails.getDatastore("RTPEntrydb").manager;
// Switching to the appropriate collection in MongoDB
const profilesCollection = RTPEntryDB.collection("workloads");

// MongoDB Change Stream - Detect changes in DB's collection
const changeStream = profilesCollection.watch();
changeStream.on("change", function(change) {
    console.log("new change", change);
    sails.sockets.blast('newWorkloads', change);
})

Это работает отлично.

Но на переднем конце я не мог слушать

      import React, { useRef, useReducer, useEffect } from 'react';
import PropTypes from 'prop-types';

import socketIOClient from 'socket.io-client';
import sailsIOClient from 'sails.io.js';


const FetchWorkloads = (props) => {

    // Instantiate the socket client (`io`)
    const io = sailsIOClient(socketIOClient);
    io.sails.url = 'http://localhost:1337/';

    io.socket.on('connect', function onConnect(){
        console.log('This socket is now connected to the Sails server!');
    });

    io.socket.on('newWorkloads', (msg) => {
        console.log('workloads changed', msg);
    });
    
    return (
        <>
            {/* My Component */}
        </>
        
    );
}

FetchWorkloads.propTypes = {
    api: PropTypes.object.isRequired
};

export default FetchWorkloads;

я получаю сообщение об ошибке GET http://localhost:1337/__getcookie net::ERR_ABORTED 404 (Not Found). Как решить эту проблему?

Спасибо

1 ответ

Я решил это, определив пользовательский __getcookieв routes.jsследующим образом:

      'GET /__getcookie': (req, res) => {
        return res.send('_sailsIoJSConnect();');
 },

Также была еще одна проблема с совместимостью между sails.io.jsа также . Я использовал последнюю версию socket.io-client(v4.4) но sailsбыл совместим только с v2.x.

Другие вопросы по тегам