2012-01-22 43 views
5

我試圖發送數據的下一塊之前刷新插座:Node.js:如何刷新套接字?

var net = require('net'); 

net.createServer(function(socket) { 
    socket.on('data', function(data) { 
     console.log(data.toString()); 
    }); 
}).listen(54358, '127.0.0.1'); 

var socket = net.createConnection(54358, '127.0.0.1'); 

socket.setNoDelay(true); 
socket.write('mentos'); 
socket.write('cola'); 

然而,這也不行,儘管setNoDelay選項,例如打印「mentoscola」而不是「mentos \ ncola」。我該如何解決?

回答

5

回頭看看WriteableStream api和相關示例看起來您應該自己設置中斷或分隔符。

exports.puts = function (d) { 
    process.stdout.write(d + '\n'); 
}; 

因爲你的插座是一個流,數據將被寫入/沒有你的直接控制閱讀,#write不會改變你的數據或假設你的意思寫之間打破,因爲你可能會流通過套接字的大量信息,可能需要設置其他分隔符。

我絕對不是這方面的專家,但這似乎是對我的合乎邏輯的答案。

編輯:這是Nodejs streaming重複,結論有一樣我指定了答案:用流的工作是不是行由行,設置自己的分隔符。

0

也許所有寫在同一記號中的數據都作爲批處理髮送。

也許在接收端,節點會在發送數據事件之前合併單獨的數據段。

+7

也許,也許...... – nalply