Nodejs表示websocket范围上的标题

时间:2014-03-04 17:55:27

标签: node.js express socket.io

我有一个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()它,因为如果另一个浏览器连接,应用程序将被更改,对吧?

1 个答案:

答案 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);
});