gpt4 book ai didi

node.js - 在 KrakenJS/Express 中加载 socket.io 作为模块

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:47 26 4
gpt4 key购买 nike

我正在尝试将我的应用程序中的 socket.io 代码分离到它自己的文件中,就像这个线程中的答案一样:Separating file server and socket.io logic in node.js

但是,socket.io 代码永远不会运行,也不会开始监听,我真的不明白为什么:

//index.js
kraken.create(app).listen(function (err, server) {
if (err) {
console.error(err);
}
var io = require('./lib/socket').listen(server);
});

//socket.js
var socketio = require('socket.io')

module.exports.listen = function(app) {
return function (req, res) {
io = socketio.listen(app);

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

socket.on('disconnect', function () {
if (socket.uid !== undefined) {
// do some stuff
}
});
});

return io;
}
};

我最好的猜测是 req 和 res 对象不存在,因为它不是请求?问题是我真的需要使用 req 对象,因为我需要在连接期间访问 session 。如果这是问题所在,如何实现?

提前感谢您的明智建议和更好的智慧。

编辑:我看过https://github.com/jfromaniello/passport.socketio这正是我所需要的,但我不知道我的 session key 或 secret 是什么。凭护照怎么知道?

最佳答案

您的监听函数只是返回另一个函数,并没有实际触发代码来设置 socketio 来监听。

尝试:

module.exports.listen = function(app) {
io = socketio.listen(app);

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

socket.on('disconnect', function () {
if (socket.uid !== undefined) {
// do some stuff
}
});
});

return io;
};

这是另一个例子: https://github.com/paypal/kraken-js/issues/39

关于node.js - 在 KrakenJS/Express 中加载 socket.io 作为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22120696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com