2016-03-28 11 views
2

Als ich das letzte Mal überprüft habe, hat Relay.js den sitzungsbasierten NetworkLayer nicht unterstützt (nur ein NetworkLayer könnte gleichzeitig verwendet werden).Unterstützt Relay.js isomorphes serverseitiges Rendering mit mehreren Sitzungen?

Daher war queue-hack (https://github.com/codefoundries/isomorphic-material-relay-starter-kit/blob/master/webapp/renderOnServer.js#L66) erforderlich, um mehrere Sitzungen zu unterstützen. Es kann nicht in der Produktion verwendet werden, da jeder Rendervorgang einen anderen Rendervorgang (einschließlich Datenabruf) vollständig blockiert.

Wie lautet der aktuelle Status zu diesem Problem? Wo kann ich den Fortschritt (Github-Probleme) verfolgen und möglicherweise helfen?

Antwort

2

This is the GitHub issue Sie suchen, und große Fortschritte wurden gemacht, die meisten Relay "Kontext" an diesem Punkt zu machen. Siehe dieses Thema für weitere Details.

0

Klingt wie das Problem in relay.JS ist, was bedeutet, dass Sie auf ihrer GitHub-Seite starten sollten, wenn Sie helfen möchten.

1

Seit Version 0.6 isomorphic-relay (die isomorphic-material-relay-starter-kit verwendet unter der Haube) unterstützt per HTTP-Anfrage Netzwerk-Layer, so dass Sitzungsdaten an GraphQL-Server übergeben. Und das Wichtigste ist, dass es für jede Anfrage einen isolierten Relay-Speicher verwendet, sodass kein Benutzer die privaten Daten eines anderen Benutzers sehen kann.

Beispiel Nutzung:

app.get('/', (req, res, next) => { 
    // Pass the user cookies on to the GraphQL server: 
    const networkLayer = new Relay.DefaultNetworkLayer(
    'http://localhost:8080/graphql', 
    { headers: { cookie: req.headers.cookie } }, 
); 

    // Pass the network layer to IsomorphicRelay.prepareData: 
    IsomorphicRelay.prepareData(rootContainerProps, networkLayer).then({ data, props } => { 
    const reactOutput = ReactDOMServer.renderToString(
     <IsomorphicRelay.Renderer {...props} /> 
    ); 

    res.render('index.ejs', { 
     preloadedData: JSON.stringify(data), 
     reactOutput 
    }); 
    }).catch(next); 
}); 
Verwandte Themen