如果計畫在不同程序或計算機之間分配連線負載,則必須確保與特定會話id關聯的請求連線到發起它們的程序。
這是由於某些傳輸,如xhr輪詢或jsonp輪詢依賴於在「套接字」的生命週期內觸發多個請求。未能啟用粘性平衡將導致可怕的:
websocket握手期間出錯:意外的響應**:400
這意味著公升級請求被傳送到不知道給定套接字id的節點,因此傳送http 400響應。
為了說明為什麼需要這樣做,請考慮向所有連線的客戶端傳送事件的示例:
io.emit('hi','all sockets');
有些客戶可能會有乙個活躍的雙向通訊渠道,就像websocket
我們可以立即寫入,但其中一些可能正在使用長輪詢。
如果他們使用長輪詢,他們可能會或可能不會傳送我們可以寫入的請求。他們可能「介於」這些請求之間。在這些情況下,這意味著我們必須在此過程中緩衝訊息。為了讓客戶端在傳送請求時成功宣告這些訊息,最簡單的方法是讓他連線到路由到同乙個程序。
如上所述,websocket
傳輸沒有此限制,因為底層tcp連線在客戶端和給定伺服器之間保持開啟。這就是為什麼您可能會找到一些僅使用websocket
傳輸的建議:
常量客戶= 10(「
要實現粘性會話,有兩個主要解決方案:
在檔案的http
部分中nginx.conf
,您可以宣告乙個upstream
包含socket.io程序列表的部分,以便在以下各項之間平衡負載:
上游節點。 例
標題新增set-cookie 「serverid = sticky。% e; path = /」 env = balancer_route_changed
rewriteengine on
rewritecond % = websocket [nc]
rewriterule /(.*)balancer:// nodes_ws / $ 1 [p,l]
rewritecond %!= websocket [nc]
rewriterule /(.* )balancer:// nodes_polling / $ 1 [p,l]
proxytimeout 3
例
#參考:http:
listen chat
bind *:80個
default_backend節點
後端節點
選項httpchk head /健康
http檢查期望狀態200
cookie io字首間接nocache#使用握手
例就像nginx一樣,node.js通過該cluster
模組提供內建的集群支援。
fedor indutny建立了乙個名為粘性會話的模組,確保檔案描述符(即:連線)基於原始路由remoteaddress
(即:ip)進行路由。請注意,這可能會導致路由不平衡,具體取決於雜湊方法。
您還可以根據群集工作程式id為群集的每個工作人員分配不同的埠,並使用上面可以找到的配置平衡負載。
現在你有多個socket.io節點接受連線,如果你想向每個人(甚至某個房間裡的每個人)廣播事件,你需要一些在程序或計算機之間傳遞訊息的方法。
負責路由訊息的介面就是我們所說的adapter
。您可以在socket.io-adapter之上實現自己的(通過繼承它),或者您可以使用我們在redis上提供的那個:socket.io-redis:
var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis());
io.emit('hi','all sockets');
將通過redis 的pub / sub機制廣播到每個節點。
注意:使用redis介面卡時仍需要粘性會話。
如果您想從nonsocket.io程序向它傳遞訊息,您應該檢視「從外部世界傳送訊息」。
kvm官方文件
kvm官方文件 kvm活遷移 使用libvirt庫建立虛擬機器 domain 需要使用xml檔案作為配置檔案,如下是乙個最基本的虛擬機器配置檔案.2014 07 01 20 50 閱讀 233 在使用qemu建立虛擬機器的過程中是無法指定ip位址的,可是在實際應用中,我們是需要虛擬機器擁有ip位址的...
grok 官方文件
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!name code class html grok 解析任意文字並構造它 grok 是當前最好的方式在logstash 解析蹩腳的非結構化日誌資料 到一些結構化的可查詢的。這個工具是完美的對於syslog logs,apache和其他webserv...
PyGame官方文件
幫助內容 help contents 指導索引 reference index 最有用的東西 most useful stuff color display draw event font image key locals mixer mouse rect su ce time music pyga...