簡體   English   中英

node.js中的socket.io:socket.emit在socket.disconnect之前沒有完成

[英]socket.io in node.js: socket.emit doesn't complete before socket.disconnect

我正在嘗試將node.js用作帶有JavaScript前端的socket.io服務器(通過https連接服務器對象,客戶端通過選項secure: true連接)。

在服務器上,如果登錄嘗試失敗,我會打電話給:

socket.emit('unauthorized');
socket.disconnect();

在客戶端,我有:

this.Socket = io.connect(server, { secure: true });
this.Socket.on('disconnect', this.Socket_Disconnect);
this.Socket.on('unauthorized', this.Socket_Unauthorized);

我能夠看到斷開事件觸發(參數設置為['booted'] ,無論我是否將任何參數傳遞給socket.disconnect() ,但未經授權的事件都無法實現。我是否試圖錯誤地傳遞此消息?方式?

我在這里的理由是,我希望能夠發送不同類型的disconnect事件,例如:

logout -客戶端應停止嘗試連接,直到用戶登錄

server reboot -客戶端應重新嘗試連接,直到它們通過為止

我需要能夠在客戶端上說明為什么客戶端被服務器斷開連接,在調用socket.disconnect()之前是否至少有某種方法可以確保已發送消息?

編輯:這似乎特定於node.js cluster代碼-當應用程序在單個線程上運行時,它可以按預期工作。

通過設置Redis服務器並配置socket.io以在node.js中使用它(如果有人發現此問題)來解決此問題,從而解決了這一問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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