簡體   English   中英

消息上的Express WebSockets獲取Cookie信息

[英]Express websockets on message get cookie info

我有一個快速的Web套接字應用程序。

onmessage函數中,我想訪問發送消息的客戶端的cookie。

這樣做的原因是我正在做游戲,並且已經有用戶登錄名。 我需要檢查Cookie的name ,以便控制正確的播放器。

到目前為止,這是我得到的:

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連接?

我嘗試了“公開”活動,但似乎沒有成功。

我在這里先向您的幫助表示感謝!

我想出了怎么做!

我忘記了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
    })
})     

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM