我使用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
,但无法找出任何明显的解决方案。
答案 0 :(得分:2)
是的,它被称为single page application。我们的想法是不重新加载页面或通过单独的HTTP请求发送页面。相反,使用WebSockets只需获取呈现用户想要查看的内容所需的数据。单页应用程序的主要优点是您始终可以控制并且整个浏览体验可以更加顺畅。
有许多框架可以使单页面应用程序的前端开发更容易。较受欢迎的可能是Angular和Ember。
当然,您不需要WebSockets来创建单页应用。你也可以use Ajax requests。但是,WebSockets还具有其他优势。
Load-balancing WebSockets可能比传统的HTTP或Ajax请求更棘手,但从你的问题猜测,这对你来说可能不是问题。
答案 1 :(得分:0)
您可以尝试将socket.id存储在目录中,而不是在用户转到新页面时再次创建新套接字,而只是使用从目录中提取的第一个套接字。
检查出来:how do I store socket resources from specific users with socket.io?