我上次检查时,Relay.js不支持基于会话的NetworkLayer(只能同时使用一个NetworkLayer)。
因此,需要queue-hack(https://github.com/codefoundries/isomorphic-material-relay-starter-kit/blob/master/webapp/renderOnServer.js#L66)来支持多个会话。它不能在生产中使用,因为每个渲染都完全阻止了另一个渲染(包括数据提取)。
这个问题的当前状态是什么? 我在哪里可以跟踪进度(github问题)并可能提供帮助?
答案 0 :(得分:2)
This is the GitHub issue你正在寻找,并且在这一点上已经取得了很大进展,使大部分接力都成为“情境”。有关更多详细信息,请参阅该问题。
答案 1 :(得分:1)
由于版本0.6 isomorphic-relay
(isomorphic-material-relay-starter-kit
在引擎盖下使用)支持每个HTTP请求网络层,允许将会话数据传递到GraphQL服务器。重要的是它为每个请求使用隔离的Relay存储,因此没有用户可以看到其他用户的私人数据。
使用示例:
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);
});
答案 2 :(得分:0)
听起来问题在于relay.JS,这意味着如果你想提供帮助,你应该从他们的GitHub页面开始。