2012-05-28 4 views
7

Có cách nào tốt để sử dụng phiên với Socket.io trong Express 3.0 không? Một cách để nhận id phiên của khách hàng một cách an toàn? Để tôi có thể gửi thông báo đến các thành viên cụ thể cho tài khoản của họ và thực hiện các cuộc trò chuyện riêng tư từ thành viên này đến thành viên khác?Socket.io Express 3 phiên

Tôi đang sử dụng kho lưu trữ MySQL trong Express 3.0

+0

Đối 4.x nhanh & socket.io 1.x http://stackoverflow.com/a/25618636/153718 – Epeli

Trả lời

0

Tôi đã làm điều gì đó hơi khác để làm việc. Tôi đọc qua rất nhiều bài viết on nodester github và đi kèm với các giải pháp sau ....

Thay thế:

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

với:

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

var io = require('socket.io').listen(server); 

Kế hoạch của tôi là tiếp tục với cách giải quyết vấn đề này cho đến khi xung quanh express3 và socket.io được giải quyết.

9

Tôi đã viết một mô-đun nhỏ để trừu tượng hóa nó, dưới đây là cách sử dụng của nó trông như thế nào. Nó được viết và thử nghiệm sử dụng Express 3, socket.io 0.9.10 và MemoryStore (mặc định) từ kết nối 2.4.5. Nó sẽ hoạt động tốt với các cửa hàng tương thích khác.

var SessionSockets = require('session.socket.io') 
    , sessionSockets = new SessionSockets(io, sessionStore, cookieParser); 

sessionSockets.on('connection', function (err, socket, session) { 
    //your regular socket.io code goes here 
}); 

Để biết thêm chi tiết về cách thức hoạt động thấy https://github.com/wcamarao/session.socket.io

Bạn có thể muốn chú ý đến các phần của README nơi nó nói làm thế nào để sử dụng nó với chìa khóa cửa phiên của riêng bạn (tôi giả cửa hàng mysql của bạn sử dụng tên khác với 'connect.sid' mặc định).

+0

trình như một say mê, cảm ơn! –

1

Bạn nên xem express.io, một khung vi rất đơn giản để tích hợp express và socket.io. Nó xử lý các phiên bản express và socket.io một cách tự động.

npm install express.io 

Kiểm tra ví dụ hỗ trợ phiên ở đây:

https://github.com/techpines/express.io/tree/master/examples#sessions

+4

Bạn nên thực sự đề cập rằng bạn đã có một bàn tay bằng văn bản đó. – deoxxa