是socket.write线程"安全?

时间:2014-07-09 06:54:13

标签: node.js sockets

我正在使用node.js通过json中的套接字进行通信。其中一个操作以base64格式通过套接字发送一个大文件。结果,消息被分成数据包并触发客户端上的各种数据事件。我使用客户端的缓冲区来处理这个问题

var response={
    file: fs.readFileSync("FileName","base64")
}
socket.write(JSON.stringify(response));

在客户端,使用缓冲区

cleartextStream.on("data",function(data){
            console.log("Received data")

            try {

                data=JSON.parse(data);
                _buffer="";
                events.trigger(data.event,data);
            }
            catch(e){
                console.log("Incomplete message received. Building Buffer");
                _buffer+=data;
                if(/\}$/.test(data) ){//Tests for json boundary
                    data=JSON.parse(_buffer);
                    events.trigger(data.event,data);

                }
            }

这对我来说现在很好。我预料到的唯一问题是,如果在发送文件时,某些其他事件会触发套接字上的写入。

t=0 Start sending file
t=5 Still sending file
t=6 Another event uses socket.write to start sending message
t=7 still sending file
t=8 Another event sending message

这将导致消息乱码。 socket.write在发送单个消息时是否阻塞,或者在传输完成之前是否允许其他方法使用socket.write?

0 个答案:

没有答案