本頁說明每個 SailsSocket 實例上可用的屬性。這些屬性是在首次呼叫 io.sails.connect
時設定的,該呼叫會建立 SailsSocket,且在 socket 連線期間無法變更 (headers
除外)。
如果 socket 斷線 (無論是非自願或因為呼叫 .disconnect
),則其屬性可以在 socket 再次連線之前變更。這表示從一部伺服器斷線的實例可以重新連線到另一部伺服器,而不會遺失其事件綁定或佇列請求。
屬性 | 類型 | 預設值 | 詳細資訊 |
---|---|---|---|
url |
io.sails.url 的值 |
socket 連線或將嘗試連線的 URL。 | |
transports |
io.sails.transports 的值 |
socket 將嘗試連線的傳輸方式。傳輸方式將依序嘗試連線,並允許升級;也就是說,如果您同時列出「輪詢」(polling) 和「websocket」,則在建立長輪詢連線後,伺服器會嘗試將其升級為 websocket 連線。此設定應符合您 Sails 應用程式中 sails.config.sockets.transports 的值。 |
|
headers |
io.sails.headers 的值 |
在 socket 連線後,預設隨此 socket 的每個請求傳送的 headers 字典。可以透過 .request() 中的 headers 選項覆寫。請參閱下方的 initialConnectionHeaders ,以取得有關設定初始 socket 握手請求的 headers 資訊。 |
屬性 | 類型 | 預設值 | 詳細資訊 |
---|---|---|---|
query |
io.sails.query 的值 |
用於初始連線至伺服器的查詢字串。在伺服器程式碼中,可以透過控制器動作中的 req.socket.handshake.query 或 socket 生命周期回呼中的 handshake._query 存取。請注意,關於 sails.io.js SDK 版本的資訊將會附加到您指定的任何查詢字串。query 的常見用法是設定 nosession=true ,表示 Sails 應用程式不應將連線的 socket 與瀏覽器 session 建立關聯。 |
|
initialConnectionHeaders |
io.sails.initialConnectionHeaders 的值 |
僅限 Node.js—瀏覽器中不可用。 要與初始連線至伺服器一起傳送的 headers 字典 (與上方的 headers 屬性相反,後者包含在初始連線之後發出的每個 socket 請求中傳送的 headers)。在伺服器程式碼中,初始連線 headers 可以透過控制器動作中的 req.socket.handshake.headers 或 socket 生命周期回呼中的 socket.handshake.headers 存取。這對於 (例如) 在初始握手時傳送 cookie header 非常有用,允許 socket 連線到先前建立的 Sails session。 |
|
useCORSRouteToGetCookie |
io.sails.useCORSRouteToGetCookie 的值 |
僅在瀏覽器環境中相關,且如果您依賴預設的 Sails session + session cookies 進行身分驗證。對於跨來源 socket 連線,請使用此屬性選擇一個路由來傳送初始 JSONP 請求,以便檢索 cookie,從而建立正確的 session。路由應以字串 '_sailsIoJSConnect();' 回應,這將允許連線繼續。如果 useCORSRouteToGetCookie 為 true ,則將使用 Sails 伺服器上的預設 /__getcookie 路由。如果為 false ,則在連線 socket 之前,不會嘗試聯絡遠端伺服器。注意:此策略在某些瀏覽器 (包括某些版本的 Safari) 上可能會失敗,因為這些瀏覽器預設會封鎖第三方 cookies。 |
io.sails.*
預設值io.sails
物件可用於為新的用戶端 socket 提供預設值。例如,設定 io.sails.url = "http://myapp.com:1234"
將導致每個新的用戶端 socket 連線到 http://myapp.com:1234
,除非在呼叫 io.sails.connect()
時提供了 url
值。
以下是 io.sails
中屬性的預設值
屬性 | 預設值 |
---|---|
url |
在瀏覽器中,為載入 sails.io.js 腳本的頁面 URL。在 Node.js 中,沒有預設值。 |
transports |
['websocket'] |
headers |
{} |
query |
'' |
initialConnectionHeaders |
{} |
useCORSRouteToGetCookie |
true |