2014-04-04 17 views
8

Tôi có máy chủ nút đang chạy, tôi sử dụng npm forever để giữ cho máy chạy khi tôi không phát triển và sử dụng npm nodemon khi tôi chỉnh sửa (khởi động lại ứng dụng khi chỉnh sửa/tải lên).Lưu trữ phiên vĩnh viễn ở Node

Tôi nhận thấy rằng bất cứ khi nào tôi khởi động lại ứng dụng, dữ liệu phiên bị mất và người chơi của tôi phải đăng nhập lại vào tài khoản của họ. Nó không phải là một thỏa thuận huuuge, nhưng tôi đã tự hỏi nếu có một cách để chỉnh sửa trang server.js của tôi mà không cần khởi động lại ứng dụng, và đăng nhập tất cả mọi người ra?

(Lưu ý rằng điều này chỉ áp dụng cho server.js hoặc chỉnh sửa mô-đun .html.js trang được phục vụ không yêu cầu khởi động lại.)

(Thứ hai lưu ý: Tôi đang sử dụng mysql, nodejs, angularjs, thể hiện .io cho tất cả điều này, chỉ trong trường hợp ai đó hỏi)

+0

Tôi sử dụng API cụm nút và khởi động lại công nhân một mà không cần khởi động lại quá trình ... Nhưng tôi cũng không có bất kỳ dữ liệu quan trọng nào trong bộ nhớ, có Redis cho ... mysql không phải là nơi tốt nhất cho phiên , thêm một số như Redis (hoặc Memcache) cho điều này để ngăn xếp của bạn .. –

+0

kiểm tra (danh mục đầu tư của bạn) {return "Bạn đang làm cho trò chơi"} – Jamie

Trả lời

7

Không có cách nào để chỉnh sửa tệp (và có thay đổi được tải) mà không cần khởi động lại máy chủ và tải lại tệp. Thay vào đó, lưu trữ dữ liệu phiên của bạn ở đâu đó ngoài bộ nhớ. Tôi biết bạn đang sử dụng MySQL, vì vậy hãy sử dụng gói connect-mysql (có các gói khác như thế này cho redis, MongoDB, v.v.).

Nó đơn giản như đặt này trong tập tin app.js của bạn:

var MySQLStore = require('connect-mysql')(express) 
    , options = { 
     config: { 
     host : 'place.stuff', 
     user: 'RUJordan', 
     password: 'hunter2', 
     database: 'SomeKittensIsGreat' 
     } 
    }; 

app.use(express.session({ 
    secret: 'UpvoteThisAnswer', 
    store: new MySQLStore(options), 
    cookie: { maxAge: 2592000000 } // 30 days 
})); 

này sẽ đặt một HTTP-only (ví dụ: người dùng không thể xem/sử dụng nó) cookie trên máy tính của người dùng. Ngay cả sau khi khởi động lại máy chủ, connect-mysql sẽ có thể thích người dùng với dữ liệu phiên của họ trong MySQL thông qua cookie này.

+0

Họ đang sử dụng MySQL ??? – Seth

+0

@Vâng, anh ấy biết điều này vì anh ấy đã giúp tôi trước và cả hai chúng tôi đều là những người quản lý [JS Chat] (http://chat.stackoverflow.com/rooms/17/javascript-is-for-lovers). –

+0

@Seth Vâng, tôi đã giúp anh ta với điều này trước đây. – SomeKittens

Các vấn đề liên quan