두 가지 가능성이있어서 websocket을 완전히 설정하기 전에 검사를 수행하는 솔루션을 선호합니다.Express.io에서 websocket 연결 요청을 승인하는 방법은 무엇입니까?
var express = require("express.io");
var app = express().http().io();
app.use(express.json());
app.use(express.cookieParser());
app.use(express.session({secret: process.env.COOKIESECRET}));
옵션 1 : Express 세션 오브젝트를 얻는 방법은 무엇입니까?
업데이트 : Express.io가 Socket.io에서 Express 세션을 사용할 수있게하는 자체 "권한 부여"기능을 등록하기 때문에이 방법을 사용할 수 없습니다.
app.io.configure(function() {
app.io.set("authorize", function(handshake, authorize) {
// Cookie is available...?
//handshake.headers.cookie
});
});
옵션 2 : Express 세션을 쉽게 얻을 수 있지만 연결이 이미 설정되었습니다.
app.io.route("test", function(req) {
if(!req.session.IsAuthorized) {
req.io.disconnect();
}
});
[이] (http://stackoverflow.com/questions/15169418/how-can-i-get-sessions-to-work-using-redis-express)를 사용하여 Redis 저장소를 얻는 데 문제가 있습니다. -socket-io)와 [this] (https://github.com/techpines/express.io/tree/master/examples#scaling-with-redis)에 대해서는 특별히 물어 보지 않았습니다. Express.io는 이미 옵션 2에서 입증 된 것처럼 Express와 Socket.io 세션 처리를 결합했습니다. Express.io에는 이미 제안한대로 세션과 일치하는 "권한 부여"기능이 정의되어 있습니다. – Ioan
귀하의 질문은 무엇입니까? 나는 당신이 당신의 질문으로 이해했던 확립 된 연결 이전에 세션에 접근 할 수있는 방법을주었습니다. – Deif
새로운 발견으로 질문을 업데이트했습니다. 당신이 권장하는 것은 Express.io에서 이미 완성되었으므로, 옵션 1은 작동하지 않습니다 (내가 이해하는 한). – Ioan