2012-01-22 38 views
5

Tôi đang cố gắng để tuôn ra một ổ cắm trước khi gửi đoạn tiếp theo của dữ liệu:Node.js: làm thế nào để tuôn ra ổ cắm?

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'); 

này, tuy nhiên, không hoạt động mặc dù tùy chọn setNoDelay, ví dụ in "mentoscola" thay vì "mentos \ ncola". Làm thế nào để sửa lỗi này?

Trả lời

5

Nhìn qua WriteableStream api và ví dụ được liên kết có vẻ như bạn nên tự mình đặt các dấu ngắt hoặc dấu phân cách.

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

Bởi vì ổ cắm của bạn là một dòng suối, dữ liệu sẽ được ghi/đọc mà không kiểm soát trực tiếp của bạn, và #write sẽ không thay đổi dữ liệu của bạn hoặc giả sử bạn đang có nghĩa là để phá vỡ giữa viết, vì bạn có thể bị chảy một mẩu thông tin lớn trên ổ cắm và có thể muốn đặt các dấu phân cách khác.

Tôi chắc chắn không có chuyên gia trong lĩnh vực này, nhưng điều đó có vẻ giống như câu trả lời hợp lý đối với tôi.

Chỉnh sửa: Đây là bản sao của Nodejs streaming và kết luận có giống như câu trả lời tôi đã chỉ định: làm việc với luồng không phải là từng dòng, đặt dấu phân cách của riêng bạn.

0

Có thể tất cả dữ liệu được viết trong cùng một dấu được gửi dưới dạng một lô.

Có thể ở bên nhận, nút sẽ kết hợp các phân đoạn dữ liệu riêng biệt trước khi phát ra sự kiện dữ liệu.

+7

có thể, có thể, ... – nalply

Các vấn đề liên quan