2013-07-01 25 views
3

我正在使用node-v0.10.4來運行web-sockets代理以連接到特定種類的服務器。但在通過代理使用Firefox瀏覽器(最新版本)進行連接後,我的終端中出現以下錯誤。錯誤顯示在終端:在爲websocket代理使用node-v0.10.4時出現'invalid data'錯誤

net.js:595 
throw new TypeError('invalid data'); 
    ^
TypeError: invalid data 
at Socket.write (net.js:595:11) 
at WebSocket.<anonymous> (/home/n-mol/Desktop/abs-master/wsproxy/wsproxy-tcp.js:69:10) 
at WebSocket.EventEmitter.emit (events.js:98:17) 
at Receiver.self._receiver.onbinary (/home/n-mol/node_modules/ws/lib/WebSocket.js:549:10) 
at Receiver.opcodes.2.finish (/home/n-mol/node_modules/ws/lib/Receiver.js:448:14) 
at Receiver.expectHandler (/home/n-mol/node_modules/ws/lib/Receiver.js:433:33) 
at Receiver.add (/home/n-mol/node_modules/ws/lib/Receiver.js:93:24) 
at Socket.firstHandler (/home/n-mol/node_modules/ws/lib/WebSocket.js:524:22) 
at Socket.EventEmitter.emit (events.js:95:17) 
at Socket.<anonymous> (_stream_readable.js:710:14) 

JavaScript代碼的下面一行出現在/home/n-mol/Desktop/abs-master/wsproxy/wsproxy-tcp.js:69:10

68. if (sock_ready) { 
69.  sock.write(bytesView.buffer); 
70. } else ... 

我想有一些兼容性問題,但我無法解決它。任何幫助將不勝感激。提前致謝。

+0

究竟是什麼'bytesView.buffer'?如果它不是字符串或緩衝區(比如,如果它是'null'),那麼你會得到這個異常。 – Pointy

+0

變量bytesView定義如下: var bytesView = new Uint8Array(data); P.S. :使用不完全由我開發的JS代碼。 –

+0

那麼'bytesView.buffer'是**不是**節點「緩衝區」實例,它也不是一個字符串。這就是錯誤告訴你的。如何讓它成爲一個或另一個,我不知道。 – Pointy

回答

3

嘗試......

if (sock_ready) { 
    sock.write(new Buffer(bytesView)); 
} else 

貌似節點交換了它組裝緩衝區的方式在0.10 VS 0.8我只是碰到這個問題也來了......即將提交pull請求NDN-js;)

+0

Hey Ryan, 問題已解決,因爲我使用的代碼與node.js v0.10.x不兼容,與您指出的相同。無論如何,謝謝:) 你正在做很酷的東西。祝一切順利。 讓我知道如果我們可以在一起;) –

相關問題