2016-12-16 13 views
0

私はエクスプレスウェブソケットアプリケーションを持っています。メッセージのエクスプレスウェブソケットは、クッキー情報を取得します

onmessageの機能では、メッセージを送信したクライアントの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接続が開いているときはどこでチェックしますか?

私は 'open'イベントを試みましたが、動作していないようです。

事前にお世話になりました!

答えて

0

私はそれを行う方法を理解しました!

他の関数の内部でreq引数にアクセスできることを忘れていました。

これは、上のメッセージ機能であなただけのこの操作を行うことができることを意味:

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 
    }) 
})  
関連する問題