我有一個socket.io應用程序。有沒有辦法暫時鎖定連接(只有一個連接)一段時間(比如說30秒)而不丟棄連接。我想要做的是,在客戶端觸發事件後,我希望該事件不會在30秒之前再次觸發。順便說一下,由於項目限制,我無法在客戶端執行此操作。Socket.io睡一些客戶端
0
A
回答
0
首先我不知道服務器端的限制,但它也可能影響客戶端,但基本上你應該創建一個房間,然後你必須指定哪個房間獲取套接字消息。您可以創建像activeRoom
和suspendedClients
(房間名稱完全是一個例子)。
然後你可以指定房間發送消息。爲特定用戶創建30秒的時間;獲取他的socketId
並將其倒計時時間30
設置爲json對象。
// Multiple Clients may be suspended , use case ?.
var suspendedClients = [{
socketId: 123981787,
countdown: 30
},{
socketId: 987987788,
countdown: 21
}];
// That users are also in suspendedClients room so they can't get messages.
// Also you might use redis to store them(?. if there is no restrictions about to use a new datastore).
您可以在setInterval
功能每秒檢查掛起的客戶。
if(suspendedClients[i].countdown == 0) {
// Remove client from suspendedClients room.
}
這個想法是一個普遍的概念。您可以根據您的確切要求來設計該想法。
0
Socket.io並不完全是這個功能。但你可以在很多方面
在任何情況下代碼時,你需要停止發送該事件或停止接收
如果您不能修改客戶端,只需保存socket.id
在stopped
和setTimeout的數組30秒將它拔出來,從陣列
另一種方法來subscribe/unsubscribe
聽衆 How to unsubscribe from a socket.io subscription?
,我想你可以使用的房間爲邏輯。
- 在一個房間裏所有的插座,所有監聽器發送/接收的那個房間
- 觸發的事件後,你離開那個房間爲您的插座秒
- 30後再次加入到它
相關問題
- 1. 客戶端的Socket.IO
- 2. Android socket.io客戶端
- 3. Socket.io Scala客戶端
- 4. Java socket.io客戶端
- 5. Socket.IO服務器+ Socket.IO客戶端
- 6. socket.io與ExtJS和socket.io客戶端
- 7. Socket.IO Java客戶端到Jar
- 8. Socket.IO客戶端安全
- 9. Socket.io客戶端調試?
- 10. socket.io作爲客戶端
- 11. 客戶端的socket.io錯誤
- 12. 客戶端tcp與node.js/socket.io?
- 13. 當只有一個客戶端發射時,爲每個客戶端發射Socket.IO
- 14. Objective-C客戶端的Socket.IO-Swift庫
- 15. OpenWhisk - socket.io - 客戶端可能嗎?
- 16. 遷移的Android客戶端socket.io 2.0
- 17. Socket.io python客戶端處理json參數
- 18. 將客戶端socket.io返回給變量
- 19. 谷歌眼鏡上的Socket.io客戶端
- 20. Socket.io客戶端發出的舊數據
- 21. 運行gottox/socket.io-java客戶端錯誤
- 22. socket.io如何讀取客戶端證書
- 23. socket.io-客戶端連接,但不發光
- 24. 帶有node.js和socket.io的SOAP客戶端
- 25. Socket.io客戶端事件觸發
- 26. socket.io客戶端沒有收到消息
- 27. 客戶不handshaken客戶端應該重新連接,socket.io集羣
- 28. 獲取客戶端的一些標識
- 29. 能否在socket.io服務器與客戶端non-socket.io
- 30. Socket.IO:推給客戶