4
我想在socket.io中編寫多通道應用程序。您所在的頻道應該由您所在的網址來定義。如果我在app.js中加入永久值,那麼一切正常。只要我改變它,以便route.page的路由進行連接,我會得到錯誤,該連接在上下文中不可用。什麼是正確的方式,以便我可以動態加入頻道?在express和js和socket.io中使用路由,也許在一般節點
/app.js
var io = socketio.listen(app);
require('./io')(io);
io.sockets.on('connection', function (socket) {
socket.on('debug', function (message) {
socket.get('channel', function (err, name) {
socket.in(name).broadcast.emit('debug', message);
});
});
});
/io.js
var socketio = function (io) {
if (!io) return socketio._io;
socketio._io = io;
}
module.exports = socketio;
/routes/index.js
var io = require('../io')();
exports.page = function(req, res){
var channel = req.params.id;
res.render('page', { title: 'PAGE', channel: channel });
io.sockets.on('connection', function (socket) {
socket.join(channel);
socket.set('channel', channel);
});
};
我可能感到困惑,我讀到的方式是「我似乎無法讓客戶端從路由中的代碼啓動套接字」,這顯然是錯誤的。你能幫我澄清一下這個問題嗎,所以我可以看到它「更正確」,而不是我現在看到的方式? – jcolebrand 2012-01-11 15:48:58