我有一個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. Android socket.io客戶端
- 2. Socket.io Scala客戶端
- 3. 客戶端的Socket.IO
- 4. Java socket.io客戶端
- 5. socket.io從客戶端
- 6. Socket.IO服務器+ Socket.IO客戶端
- 7. socket.io與ExtJS和socket.io客戶端
- 8. C客戶端的socket.io
- 9. Socket.IO Java客戶端到Jar
- 10. socket.io客戶端掛斷
- 11. Socket.IO客戶端安全
- 12. node.js/socket.io - 跟蹤客戶端
- 13. node.js socket.io客戶端+ python socketio
- 14. 在客戶端包含Socket.io
- 15. 客戶端的socket.io錯誤
- 16. Socket.io客戶端[email protected]
- 17. Socket.io客戶端調試?
- 18. 客戶端tcp與node.js/socket.io?
- 19. socket.io客戶端不連接
- 20. socket.io作爲客戶端
- 21. tcp客戶端與socket.io(nodejs)
- 22. Socket.io客戶端到客戶端邏輯,有很多用戶
- 23. socket.io客戶端'on'僅在兩個客戶端發出'
- 24. 當只有一個客戶端發射時,爲每個客戶端發射Socket.IO
- 25. Socket.io python客戶端處理json參數
- 26. Socket.io客戶端事件觸發
- 27. 將客戶端socket.io返回給變量
- 28. 在客戶端無法獲取socket.io
- 29. Socket.io Java客戶端版本1.0.x
- 30. 無法讓socket.io在客戶端啓動