Solo quiero adjuntar algunas variables a mis sockets, pero no entiendo los métodos .get y .set. Ambos tienen un tercer argumento para una devolución de llamada. ¿Se puede omitir esto? ¡¿Para qué sirve?! ¿La devolución de llamada en sí misma en argumentos?socket.io socket.set y socket.get - ¿Para qué sirve el argumento de devolución de llamada?
Mi mejor versión es que está disponible para cuando socket.io no está utilizando la memoria del almacén pero está guardando esto en otro lugar y necesita un error para verificar la devolución de llamada.
socket.on('set nickname', function (name) {
socket.set('nickname', name, function (arguments) {
doSomethingMysterious();
});
estoy usando socket.io 0.9.x
La función se define en socket.js
/**
* Stores data for the client.
*
* @api public
*/
Socket.prototype.set = function (key, value, fn) {
this.store.set(key, value, fn);
return this;
};
Gracias, el hecho de que son asíncronas hace que sea más fácil para envolver mi dirígete a todo el asunto. En casos comunes, ¿esto se usaría para guardar valores en un db en algún lugar y luego usar otra emisión para el cliente para hacerles saber que se guardó? Supongo que todavía no está claro para mí, aparte de la colisión del espacio de nombres, ¿por qué no podríamos simplemente usar algo como 'socket.property = value;' Acabo de empezar con node.js Hace 2 días, perdona mi ignorancia! –
Sí, una buena razón por la que usaría 'set',' get' (como opuesto a simplemente guardar un valor en un objeto), es guardarlo en el db. De hecho, 'socket.io' parece tener una compilación en' redis store', pero no soy un usuario de socket.io, así que no puedo decir cómo se puede usar. Si miras el código fuente, cuando llamas a 'set' esto pone el valor en' store': https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L246 – mihai
y que .store por defecto es redis? ¿O es como estar en su lugar para que pueda configurar su propia tienda? – Funkodebat