我正在使用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资源?