【发布时间】:2014-03-15 12:44:02
【问题描述】:
我在我的应用中使用session.socket.io
o = require('socket.io').listen(tmpServer),
appCookieParser = express.cookieParser(settings.cookie.secret),
appRedisStore = new RedisStore(),
sessionIO = new SessionSockets(io, appRedisStore, appCookieParser
App.app.use(appCookieParser)
App.app.use(express.session({
store: appRedisStore
}))
请注意,App 是一个全局变量,其中包含我的一些应用数据和一些辅助函数,因为我遵循了LearnAllTheNodes 应用程序结构。
然后我在connection上定义回调
sessionIO.on('connection', socketHandler)
其中socketHandler 是require 调用返回的函数。
module.exports = function(err, socket, session) {
console.log(io.sockets.clients('a'))
socket.join('a')
console.log(io.sockets.clients('a'))
}
根据documentation,我应该可以访问我的io 对象,但我总是收到io 未定义的错误。
请注意,如果我在sockatHandler 中发出某些事件或监听某些事件,我将正确获取/发送它们。只是我无法访问io。
更新
事实证明,如果我将回调函数作为匿名函数来实现,它就可以完美运行。文档比较混乱,应该是:如果有参考可以使用io。
【问题讨论】:
标签: node.js sockets session express socket.io