socket.io 确保客户端重新连接时的状态
socket.io ensure state on client reconnection
我目前正在与 socket.io 合作一个项目,我不确定是否完全理解重新连接的机制。
由于客户端可能会断开连接,我想知道如何维护服务器上套接字的状态。我已经知道 socket.io-client 会尝试自动重新连接,但我想知道是否可以确保服务器端套接字的状态。
我在考虑一个基于 cookie 的会话,例如 express,但我再次不确定我是否采取了好的方法。我应该考虑其他解决方案吗?
郑重声明,我使用基于 cookie 的粘性会话机制成功配置了 HAProxy。是否可以将此机制与 socket.io 服务器上的 cookie 会话混合使用?
谢谢
威廉
我认为基于 cookie 的会话是您的最佳选择。查看 session.socket.io 模块。看起来它是专门为此建造的。
var SessionSockets = require('session.socket.io');
var sessionSockets = new SessionSockets(io, sessionStore, cookieParser);
sessionSockets.on('connection', function (err, socket, session) {
//your regular socket.io code goes here
//and you can still use your io object
session.foo = 'bar';
//at this point the value is not yet saved into the session
session.save();
//now you can read session.foo from your express routes or connect middlewares
});
或者,您可以使用您提到的 express 自己实现会话。我不知道有什么简单的方法可以与 HAProxy 集成。
我目前正在与 socket.io 合作一个项目,我不确定是否完全理解重新连接的机制。
由于客户端可能会断开连接,我想知道如何维护服务器上套接字的状态。我已经知道 socket.io-client 会尝试自动重新连接,但我想知道是否可以确保服务器端套接字的状态。
我在考虑一个基于 cookie 的会话,例如 express,但我再次不确定我是否采取了好的方法。我应该考虑其他解决方案吗?
郑重声明,我使用基于 cookie 的粘性会话机制成功配置了 HAProxy。是否可以将此机制与 socket.io 服务器上的 cookie 会话混合使用?
谢谢
威廉
我认为基于 cookie 的会话是您的最佳选择。查看 session.socket.io 模块。看起来它是专门为此建造的。
var SessionSockets = require('session.socket.io');
var sessionSockets = new SessionSockets(io, sessionStore, cookieParser);
sessionSockets.on('connection', function (err, socket, session) {
//your regular socket.io code goes here
//and you can still use your io object
session.foo = 'bar';
//at this point the value is not yet saved into the session
session.save();
//now you can read session.foo from your express routes or connect middlewares
});
或者,您可以使用您提到的 express 自己实现会话。我不知道有什么简单的方法可以与 HAProxy 集成。