我有一个node.js + express + socket.io app。
我想在套接字中保存请求标头,以便以后使用。
io.sockets.on('connection', function (socket) {
socket.headers = {};
app.get('*', function (req, res) {
//fetch headers
socket.headers.ua = req.headers['user-agent'];
res.sendfile(__dirname + '/index.html');
});
....etc
但因为我在应用范围内,套接字未定义。我总是对进出范围感到困惑。 我不能app.get()它,因为如果另一个浏览器连接,应用程序将被更改,对吧?
答案 0 :(得分:1)
你做错了。每个套接字都有一个handshake
对象,其中包含请求标头,域,主机,日期等。如果您仍想获取标头信息,请执行以下操作:
io.sockets.on('connection', function(socket) {
console.log(socket.handshake); //This would print handshake object in JSON format
// to get req-header, do this
socket.head = socket.handshake.headers['user-agent'];
});
稍后您可以在以下某些事件中使用此属性:
socket.on('EventName',function(data){
console.log(socket.head);
});