Javascript 跨页面请求在NodeJ上维护后端连接?

Javascript 跨页面请求在NodeJ上维护后端连接?,javascript,node.js,sockets,express,thrift,Javascript,Node.js,Sockets,Express,Thrift,我通过thrift()与后端服务器建立连接以进行api调用,但是与NodeJ的通信是双向的(推/拉) 当用户浏览不同的URL,Node通过Connect/Express路由大量生成jade模板和javascript文件时,如何维护与后端服务器的连接,并将连接状态作为呈现的jade输出的一部分输出(例如) 我有连接对象,但如何处理它 套接字和端口通信对我来说通常是一个新领域,因此任何帮助都将不胜感激 请记住,后端服务器不是作为客户端与web浏览器通信,而是作为客户端与NodeJS服务器通信。(在评

我通过thrift()与后端服务器建立连接以进行api调用,但是与NodeJ的通信是双向的(推/拉)

当用户浏览不同的URL,Node通过Connect/Express路由大量生成jade模板和javascript文件时,如何维护与后端服务器的连接,并将连接状态作为呈现的jade输出的一部分输出(例如)

我有连接对象,但如何处理它

套接字和端口通信对我来说通常是一个新领域,因此任何帮助都将不胜感激

请记住,后端服务器不是作为客户端与web浏览器通信,而是作为客户端与NodeJS服务器通信。

(在评论中讨论后更新)

所以看起来thrift是基于TCP的,这意味着节点客户端将保持与thrift API服务器的连接打开。这完全独立于node/express应用服务器对浏览器客户端的操作。因此,如果将thrift客户端的引用附加到
app
对象,使其对所有请求都可用,那么您应该能够确定其当前状态,并将该信息包含在对浏览器的HTTP响应中。在处理浏览器HTTP请求的express app server和对API服务器进行RPC调用的thrift客户端之间不会有任何自动协调或关联。如果需要协调,则需要显式编写代码,但向浏览器发送HTTP响应不会自动关闭thrift TCP与thrift RPC服务器的连接(反之亦然)。

(在评论中讨论后更新)


所以看起来thrift是基于TCP的,这意味着节点客户端将保持与thrift API服务器的连接打开。这完全独立于node/express应用服务器对浏览器客户端的操作。因此,如果将thrift客户端的引用附加到
app
对象,使其对所有请求都可用,那么您应该能够确定其当前状态,并将该信息包含在对浏览器的HTTP响应中。在处理浏览器HTTP请求的express app server和对API服务器进行RPC调用的thrift客户端之间不会有任何自动协调或关联。如果您想要协调,您需要显式地编写代码,但向浏览器发送HTTP响应不会自动关闭您与thrift RPC服务器的thrift TCP连接(反之亦然)。

您可以尝试对许多站点使用iframe,在页面的主外壳上保持连接打开的同时重新加载?否则,我认为如果请求之间没有一些cookie数据,并且在cookie中的某个键和服务器上的某个线程之间保持关联,那么就很难做到这一点。这似乎太容易出错。任何用户都可以使用该连接,我们不必将其与特定的sessionID关联,只需持久化连接对象即可。我想知道我是否只是在错误地处理这个问题。不幸的是,iframe方法似乎也不可靠。你可以尝试在很多网站上使用iframe,并在保持页面主外壳上的连接打开的同时重新加载它?否则,我认为如果请求之间没有一些cookie数据,并且在cookie中的某个键和服务器上的某个线程之间保持关联,那么就很难做到这一点。这似乎太容易出错。任何用户都可以使用该连接,我们不必将其与特定的sessionID关联,只需持久化连接对象即可。我想知道我是否只是在错误地处理这个问题。不幸的是,iframe方法似乎也不可靠。我不认为节俭使用WebSocket(我想是RPC),但我不确定。我知道它会将字节数据读写到缓冲区。谢谢你关于连接没有关闭的一点——这是有道理的,尽管我不知道如何实现它!如果只是HTTP长轮询,那么我认为节点的核心HTTP模块在默认情况下会表现良好。RPC是/你想做什么/你想做什么,而(web)套接字可能是一种/如何做的方法。@JensG嗨,谢谢你澄清这一点。如何确定是否正在使用WebSocket?(npm节点节约)似乎不是这样。NodeJ的Thrift库代码中使用的调用是net.createServer()和net.createConnection()。这是使用Apache Thrift()。我不认为节俭使用WebSocket(我想是RPC),但我不确定。我知道它会将字节数据读写到缓冲区。谢谢你关于连接没有关闭的一点——这是有道理的,尽管我不知道如何实现它!如果只是HTTP长轮询,那么我认为节点的核心HTTP模块在默认情况下会表现良好。RPC是/你想做什么/你想做什么,而(web)套接字可能是一种/如何做的方法。@JensG嗨,谢谢你澄清这一点。如何确定是否正在使用WebSocket?(npm节点节约)似乎不是这样。NodeJ的Thrift库代码中使用的调用是net.createServer()和net.createConnection()。