2017-10-06 135 views
1

我設法部署了WebRTC信令服務器(https://github.com/andyet/signalmaster)。剩下的只有一個問題 出於某種原因,該連接在Chrome中不起作用。鉻拋出一個警告:WebRTC信令服務器在Chrome中關閉Websocket連接

WebSocket connection to '<wss://.......:8888/socket.io/?EIO=3&transport=websocket&sid=-OpElfbpa4_ZAGS9AAAK>' failed: WebSocket is closed before the connection is established. 

Hovewer它工作正常在Firefox。 我設置了SSL證書。信令服務器在EC2上運行。 你有什麼想法如何解決這個問題?

+0

要獲取更多信息,請嘗試調試socket.io並查看是否可以瞭解套接字被關閉的原因。您可以在服務器端使用:'DEBUG = * node app.js'或'localStorage.debug ='*';'在客戶端。有關如何在此[鏈接](https://www.tutorialspoint.com/socket.io/socket.io_logging_and_debugging.htm)中進行調試的詳細信息,請參閱。 如果您發現可疑內容,請更新您的問題,這樣我們就可以更好地幫助您:)。 – elbecita

+0

@elbecita這裏是一個在服務器上輸出的pastebin https://pastebin.com/8YfrBsY4 和客戶端輸出http://prntscr.com/gvozyc – brmk

+0

沒有看到任何相關的信息,這有助於確定連接關閉的原因。我回答了一些要嘗試的事情。讓我知道他們是否有幫助。 – elbecita

回答

0

有幾件事情來嘗試,可能解決這一問題:

  • 是socket.io和socket.io客戶端相同的版本?如果不是,你應該將它們設置爲相同的版本並嘗試,因爲不匹配會導致不穩定的行爲。

  • 嘗試修改ping時間間隔和乒乓超時,以檢測是否由於心跳超時,因爲它在Chrome上花費的時間更長。你可以這樣做:

const io = require('socket.io')(http, {'pingInterval': 5000, 'pingTimeout': 10000});

(這將是間隔5秒10秒超時,隨時調整這個,看看它是否會影響以某種方式)。

  • 與心跳相關檢查answer也是如此。可能是因爲socket中沒有任何活動,因此socket.io關閉了連接。

  • 另一件事是檢查日誌:當你試圖建立WebRTC連接,打開一個新標籤,然後轉到chrome://webrtc-internals/,看看您是否可以檢查是怎麼回事。如果有ICE候選人,如果沒有,如果有一對選定的候選人等。

我希望這些信息的一些幫助。