Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问socket.on函数中的请求参数_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 访问socket.on函数中的请求参数

Javascript 访问socket.on函数中的请求参数,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我是node.js的初学者,如果我出错了,很抱歉。 为了获得在URL中传递的参数,比如localhost:3000?id=man&fm=gilli,我使用了 app.get('/',function(req, res){ var now = req.query.id; res.sendfile(__dirname + '/index.html'); }); 我的疑问是我想访问socket.on函数中的fm,因为我已经这样尝试过了 io

我是node.js的初学者,如果我出错了,很抱歉。

为了获得在URL中传递的参数,比如localhost:3000?id=man&fm=gilli,我使用了

   app.get('/',function(req, res){
     var now = req.query.id;

     res.sendfile(__dirname + '/index.html');

   });
我的疑问是我想访问socket.on函数中的fm,因为我已经这样尝试过了

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

                socket.nickname = req.query.fm;   //here I accessed it  
            users[socket.nickname] = socket;

        });
但它的错误是:

        req is not defined.
这里的一个条件是我们不应该将fm参数存储在全局变量中,这意味着我们必须直接访问io.socket函数中url中传递的参数

i、 e:在下面的代码中,fm不应该像id参数一样被访问

我的总代码是:

    var express = require('express'),
    app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
mongoose = require('mongoose'),
    users = {},
now,
other;

    server.listen(3000);





        app.get('/',function(req, res){
             now = req.query.id;

             res.sendfile(__dirname + '/index.html');

        });   

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

              socket.nickname = now; // parameter id stored here using a global variable

               users[socket.nickname] = socket;





socket.on('send message',function(data, callback){
    var msg = data;


         var name = req.query.fm;    //here I got error
         var msg = msg;
         if(name in users){

                 }else{
         callback('Error enter a valid user.');
         }

  });

});

您需要实现授权

在Express中,当套接字连接时,默认情况下我们不知道它属于哪个会话,这意味着我们不能对该连接执行任何私有操作