簡體   English   中英

Socket.io,socket.set()和socket屬性之間的區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM