消息上的快速websockets获取cookie信息

时间:2016-12-16 22:09:42

标签: node.js express cookies websocket

我有一个快速的Web套接字应用程序。

onmessage函数中,我想访问发送邮件的客户端的cookie。

这样做的原因是我正在制作游戏并且我有用户登录。我需要检查name cookie的内容,以便控制正确的播放器。

这是我到目前为止所得到的:

var express = require('express');
var expressWs = require('express-ws');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var app = express();

app.use(cookieParser('secretkey123'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}))

expressWs = expressWs(app);

app.get('/', function(req, res) {
    // stuff for logging in
})

app.post('/', function(req, res) {
    // stuff for logging in
})

app.get('/logout', function(req, res) {
    res.clearCookie('name');
    res.redirect('/');
    // more stuff for logging in
})

app.ws('/ws', function(ws, req) {
    ws.on('open', function() {
        // how do I check when a connection is opened?
    })
    ws.on('message', function(msg) {
        // who sent the message? how do I get the cookie info to check the user who send it?
    })
    ws.on('close', function() {
        // the've disconnected
    })
})

var server = app.listen(8000, function () {
   var host = server.address().address
   var port = server.address().port
})

这可能吗?

另外,我在哪里检查何时打开websocket连接?

我尝试过打开'事件,但它似乎没有工作。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我想出了怎么做!

我忘了可以在其他函数中访问req参数。

这意味着在on message功能中你可以这样做:

ws.on('message', function(msg) {
    req.cookies.username //do stuff
});

可以在设置任何事件之前完成连接打开代码:

app.ws('/ws', function(ws, req) {
    // connection open code here
    ws.on('message', function(msg) {
        // connection message code here
    })
})