2013-06-03 42 views
2

我在一個Node websocket服務器中使用ws繼續框架不能跟隨當前的操作碼

在生產中,我經常得到這個錯誤:

Error: continuation frame cannot follow current opcode

是什麼原因造成的?

應該如何在開發環境中調試和複製這個錯誤?

編輯:

似乎沒有具體到一個瀏覽器,我已經在除Chrome,Firefox和IE10的連接,並從不同的操作系統捕獲這些錯誤。

編輯2:

則拋出Error here。 !顯然接收與操作碼0的幀的幀後,用代碼後= 1 & & = 2

EDIT 3:

RFC6455,第5.2節,顯示了操作碼意味着和框架的解剖結構。

回答

1

對於在幀需要成爲1/text或2/binary的連續幀或初始幀之前處理幀的延續幀。因此,一個不是延續,文本或二進制幀的幀將被髮送。或者應該先發送新的文本或二進制幀。

要進行調試,您需要分析客戶端的代碼,並檢查服務器端的幀以找出錯誤發送幀的原因。

+0

每規範,延續(操作碼0)框架可以按照任何鰭==虛假數據幀(操作碼0,1或2)或ping(操作碼9)或pong(操作碼10)。請注意,ping/pong可以位於一組幀的中間,對這些幀構成的整體消息沒有影響。 –

2

您可能對您的服務器運行Autobahn Testsuite(在模糊客戶端模式下)。這會給你一個詳細的報告,如this(包括佈線)遇到的問題。

信息披露:我是Autobahn的原創作者,爲Tavendo工作。

0

我開始看到這個錯誤,它是由這個代碼在我server.js造成的:

wss.on('connection', function (client, request) { 
    wsg = client; 
    client._socket.setEncoding('utf8'); // <== oops, don't do this 
    // ... 
}