如何通过多个网页携带套接字连接?



我正在使用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分配给套接字,然后可以使用它有选择地向某些用户发送数据。我首先在每个网页中插入这个。我注意到,当我们移动到新页面时,甚至在重新加载时,调用套接字连接和断开连接。是否有一种方法来避免这种情况,只做一次init调用?

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

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

有许多框架可以使单页应用程序的前端开发更容易。比较流行的可能是Angular和Ember。 当然,你不需要WebSockets来创建单页应用程序。您也可以使用Ajax请求。然而,WebSockets提供了其他优势。

负载平衡WebSockets可能比传统的HTTP或Ajax请求更棘手,但从你的问题中猜测,这可能不是你的问题,到目前为止。

您可以尝试存储套接字。当用户进入一个新页面时,它只是使用从你的目录中拉出的第一个创建的套接字,而不是再次创建一个新的套接字。

看看这个:我如何用socket.io存储来自特定用户的socket资源?

最新更新