我怎样才能通过多个网页进行套接字连接?

我正在使用node.js和socket.io进行一些双向的数据处理。 当客户端浏览网站时,我想要的是持久连接。 我正在使用标准

var socket; socket = io.connect("http://localhost:port"); socket.on('connect', function(data){ console.log("called connect"); console.log(user_id); socket.emit('init', user_id); }); 

这样,我将user_id分配给该套接字,并可以稍后使用该选项将数据select性地发送给某些用户。 我是第一次插入每个网页。 我注意到,当我们移动到新页面,甚至重新加载时,调用套接字连接和断开连接。 有没有办法避免这种情况,只做一次init调用?

我试着看express.js但无法找出任何明显的解决scheme。

是的,它被称为单页面应用程序 。 这个想法是不重新加载页面或通过单独的HTTP请求发送页面。 相反,使用WebSockets来获取必要的数据来呈现用户想要看到的内容。 单页应用程序的主要优点是您始终保持控制,整个浏览体验可以更顺畅。

有许多框架可以使单页面应用程序的前端开发更容易。 更受欢迎的可能是Angular和Ember 。

当然你不需要WebSockets来创build单页面的应用程序。 您也可以使用Ajax请求 。 但是,WebSockets还有其他优点。

负载平衡WebSockets比传统的HTTP或Ajax请求更棘手,但从你的问题猜测,这可能不是一个问题,至今。

您可以尝试将socket.id存储在您的目录中,而不是在用户进入新页面时再次创build一个新套接字,而只是使用从您的目录中创build的第一个套接字创build的第一个套接字。

检查了这一点: 如何使用socket.io从特定的用户存储套接字资源?