Chcę tylko dołączyć niektóre zmienne do moich gniazd, ale nie rozumiem metod .get i .set. Obaj mają trzeci argument na wywołanie zwrotne. Czy można to pominąć? Po co to jest?! Czy samo wywołanie zwrotne zawiera argumenty?socket.io socket.set i socket.get - dla czego służy argument callback?
Przypuszczam, że jest tam, gdy socket.io nie używa magazynu pamięci, ale zapisuje te rzeczy gdzie indziej i wymaga sprawdzenia błędu oddzwaniania.
socket.on('set nickname', function (name) {
socket.set('nickname', name, function (arguments) {
doSomethingMysterious();
});
Używam socket.io 0.9.x
Funkcja jest zdefiniowana w socket.js
/**
* Stores data for the client.
*
* @api public
*/
Socket.prototype.set = function (key, value, fn) {
this.store.set(key, value, fn);
return this;
};
Dzięki, fakt, że są one asynchroniczny ułatwia owinąć obejrzyj całą sprawę. W typowych przypadkach byłoby to używane do zapisania wartości do db gdzieś, a następnie użyć innego emitować z powrotem do klienta, aby poinformować go, że jest zapisany? Sądzę, że nadal nie jest dla mnie jasne, inne niż kolizja nazw, dlaczego nie możemy po prostu użyć czegoś takiego jak 'socket.property = value;' Po prostu zaczęło się od node.js 2 dni temu, proszę wybaczyć moją ignorancję! –
Tak, dobrym powodem, dla którego użyłbyś 'set',' get' (w przeciwieństwie do zapisania wartości w obiekcie), jest zapisanie jej w db. W rzeczywistości 'socket.io' wydaje się mieć już kompilację' 'redis store', ale nie jestem użytkownikiem socket.io, więc nie mogę powiedzieć, w jaki sposób można to wykorzystać. Jeśli spojrzysz na kod źródłowy, wywołanie 'set' spowoduje umieszczenie wartości w' store': https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L246 – mihai
i że .store domyślnie jest redis? Czy jest to jak na miejscu, abyś mógł założyć własny sklep? – Funkodebat