[英]Socket.io, difference between socket.set() and socket property?
Socket.io建議設置每個套接字變量,如下所示:
socket.set('foo', bar, function () {});
也可以在套接字上設置和訪問變量:
socket.foo = bar
使用提供的set()函數有什么好處?
調用socket.foo
在socket對象本身上設置屬性。 建議不要這樣做,因為您可能會覆蓋套接字使用和依賴的內部屬性。 當你調用socket.set()
它存儲在一個不會與內部屬性沖突的內部數據結構中。
https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L246
Socket.prototype.set = function (key, value, fn) {
this.store.set(key, value, fn);
return this;
};
我認為主要原因是附加到套接字的數據是多進程安全的。
如果您的應用程序是單個進程,則始終是單個進程,並且您確定您沒有覆蓋內部屬性, socket.foo = bar
將沒問題。 使用get / set作為未來驗證和最佳實踐的問題仍然是最好的。
在多進程世界中,如果在一個進程中設置socket.foo = bar
,那么在另一個進程中socket.foo
將是未定義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.