node.js - 通过多个页面将变量保存在socket.io中

标签 node.js session express socket.io

我是 node.js 和 socket.io 的新手,所以其中一些问题可能看起来很愚蠢。话虽如此,我一直在尝试开发一个可以在不同页面之间存储用户名的应用程序。例如,我在一页上设置了我的用户名。然后我被重定向到另一个页面,但我的用户名仍然保留为套接字连接中可访问的变量。

这是我的基本服务器设置:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/set', function(req, res){
    res.sendfile('set.html');
});

app.get('/get', function(req, res){
    res.sendfile('get.html');
});


io.on('connection', function(socket){



});


http.listen(3000, function(){
  console.log('listening on *:3000');
});

我的问题是:

1.) 是否可以知道socket当前在哪个页面?如果是这样,如何?

2.) 我如何与 io.on(...) 中的信息进行交互?

我尝试过为 socket.io 和 express 使用 session 中间件,但似乎无法正常工作。我很确定使用 session 是最好的方法,但我不知道如何实现它们。关于设置可通过不同页面访问的 session 的任何建议也很好。

谢谢!

最佳答案

您必须为此使用快速 session 和握手:

    sock.on('your_socket_name', function (data) {
       sock.handhsake.session.name = data.name;
       sock.handshake.session.save();
    });

通过此链接,它一定会对您有所帮助:

https://www.npmjs.com/package/socket.io-handshake

关于node.js - 通过多个页面将变量保存在socket.io中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665623/

相关文章:

javascript - 将curl POST 请求作为npm 脚本执行

javascript - node.js 的可折叠/可扩展浏览器样式控制台?

php - Filesystem.php 中的 ErrorException

session - 如何在 Nuxt.js 中实现异步中间件

node.js - Passport 中的闪现消息是什么?

node.js - Express路由器调用错误的路由

node.js - Socket.io 在发送 header 后导致错误 'Error: Can' t set headers。

node.js - 在 NodeJS 重启时保持快速 session

express - 在 Express 中获取请求来源

javascript - 为什么我不能将 SailsJS 模型命名为与 MySQL 表相同的名称?