簡體   English   中英

會觸發Socket.io“消息”事件,但不會觸發個別偵聽器。 在iframe中注冊的監聽器

[英]Socket.io 'message' event fires, but individual listeners don't fire. Listeners registered in iframe

我有一個主頁,其中包含iframe。 主頁使用socket.io連接到我的Node.JS服務器。 套接字存儲在window.socket 然后,在iframe中,我使用parent.window.socket訪問套接字。 在iframe中運行console.log(parent.window.socket)表示它有效。

在iframe中,我有幾件事。 首先,為事件A注冊處理程序。 它具有清晰的輸出(console.log),因此其輸出代碼不是錯誤的。 我也有socket.on('message')來捕獲所有消息。 最后,我有一些發射將消息發送到服務器。

我已經確認服務器正在連接並接收消息,因為來自我的發射事件和連接/斷開事件都將觸發。 但是,當服務器發回一條消息作為響應時,該事件不會觸發 socket.on('message') ,我收到的消息很好,帶有正確的數據和參數,但是我的事件socket.on('A')不會觸發。

我檢查過:

  • 我在iframe代碼中使用了正確的WebSocket對象。
  • iframe和“查看器”頁面是來自同一域和服務器的服務器(不是跨域問題)
  • 兩端都收到了消息,但是服務器未觸發自定義處理程序。
  • 控制台中沒有錯誤。
  • 嘗試使用firefox調試器單步執行代碼,並且發送的變量和數據都正確。

編輯:也在父頁面中對其進行了測試-相同的行為。 它在socket.on('message')接收消息,但不會觸發socket.on('A')

弄清楚了。 在客戶端和服務器上混合使用了socket.send()和socket.emit(),但是,根據這篇文章 ,send僅觸發'message'事件,而'emit'觸發自定義事件。 使用iframe與它無關。

暫無
暫無

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

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