当前位置: 首页 > 知识库问答 >
问题:

nodejs,socket.io:如何从套接字函数获得请求和响应?

孟自强
2023-03-14

我正在为注册用户创建聊天应用程序,使用nodejs(0.8.15)、express(>3.0)框架和mongodb。

var express = require('express')
  , http = require('http')
  , path = require('path')
  , io = require('socket.io');

var app = express()
  , server = http.createServer(app)
  , io = io.listen(server);

    app.configure(function() {
      app.set('port', process.env.PORT || 3000);
      app.set('views', __dirname + '/views');
      app.set('view engine', 'ejs');
      app.use(express.favicon());
      app.use(express.logger('dev'));
      app.use(express.bodyParser());
      app.use(express.methodOverride());
      app.use(express.cookieParser('secret'));
      app.use(express.session({cookie: {maxAge: 60000*100}}));
      app.use(app.router);
      app.use(express.static(path.join(__dirname, 'public')));
    });

    app.configure('development', function() {
      app.use(express.errorHandler());
    });

    app.get('/chat', function(req, res) {
        res.render('chat');
    });

 server.listen(app.get('port'), function() {
    console.log("Express server listening on port " + app.get('port'));
  });

 io.sockets.on('connection', function (socket) {
    socket.on('start-chat', function() {
         // here i need to know req and res
         // for example, i need to write:
         // socket.username = req.session.username;
    });
 });

问:如何让res和req对象在像上面的代码一样聊天时与它们一起工作?还是我在与用户Auth创建聊天时走错了路?

共有1个答案

闻人宝
2023-03-14

您需要使用授权

var socketIO = require('socket.io').listen(port);
socketIO.set('authorization', function(handshakeData, cb) {
   //use handshakeData to authorize this connection
   //Node.js style "cb". ie: if auth is not successful, then cb('Not Successful');
   //else cb(null, true); //2nd param "true" matters, i guess!!
});

socketIO.on('connection', function (socket) {
   //do your usual stuff here
});
 类似资料:
  • 请帮我找出问题所在。我太过分了,请帮我解决这个问题

  • 做这件事的好方法是什么?

  • 我正试图通过改型2获得原始响应。0.2. 到目前为止,我试图使用以下代码行打印响应,但它打印的是地址,而不是确切的响应正文。 日志i(“原始消息”,response.body()。toString());

  • 如果我尝试实现一个自定义转换器(我在网上找到了一些例子),它会抱怨我没有实现抽象方法convert(F),而这些例子都没有实现。 谢了。

  • 问题内容: 如何使用request下载文件内容,并使用aws-sdk for node直接将其流式传输到s3? 下面的代码给了我,这使得请求似乎没有返回可读流… 每个aws- sdk文件都 必须是一个对象。 我在这里做错了什么? 可以使用s3-upload-stream模块将其关闭,但是我希望限制我的依赖关系。 问题答案: 如果要手动侦听响应流,则要使用该对象:

  • 问题内容: 为了查看我在处理传入数据方面的表现如何,我想测量TCP和UDP套接字上的队列长度。 我知道我可以通过套接字选项获取队列大小,并且可以告诉我有关TCP套接字的信息。但是对于UDP,/ ioctl仅返回下一个未决数据报的大小。有没有一种方法可以获取UDP的队列大小,而无需解析系统表,例如? 问题答案: 如ldx所述,ioctl或getsockopt不支持它。在我看来,SIOCINQ的当前实