NodeJS (coffeescript): TCP套接字断断续续写



我在使用nodejs中的net模块设置一个简单的简单服务器时遇到了麻烦,该模块使每个tcp套接字一旦连接就打开,从套接字读取数据并在收到每行文本后回复/写入数据回套接字。

我正在接收所有的数据线/块/请求,对于每一个我写一个响应字符串到套接字。但是,客户端只接收到部分书面回复。

下面是我为服务器简化的代码:
net = require('net')
server = net.createServer()
nl = String.fromCharCode(10)
server.on('connection', (socket) ->
  console.log('net server connection')
  handle = (data, next) ->
    if data.toString().indexOf('@COMMAND;') > -1
      console.log("sending: #{"@NONEn"}")
      socket.write("@NONE#{nl}", next)
    else
      console.log("sending: MF;OK;9999-9999")
      socket.write("MF;OK;9999-9999#{nl}", next)
  socket.on('end', () ->
    console.log('client disconnected')
  )
  socket.on('data', (data) ->
    console.log("recieved: #{data}")
    console.log("pausing")
    socket.pause()
    handle(data, () ->
      socket.resume()
      console.log("resuming")
    )
  )
  socket.on('error', (err) ->
    winston.error("socket error: ", err)
  )
)
server.on('listening', () -> console.log('net server listening'))
server.on('error', (err) -> console.log('net server error', err))
server.on('close', (err) -> console.log('net server close'))
server.listen(8888)

我无法控制的客户端,但已经过测试,工作正常。

这是期望的输出:

TX: @TR;MF;1234;3;1;1;999999;12345;#
RX: MF;OK;9999-9999
TX: @TR;MF;1235;2;1;11111;22222;33333;44444;1;2;13579;30.23;1090.23;0;1;12345;#
RX: MF;OK;9999-9999
TX: @COMMAND;12345
RX: @NONE

这是实际的输出:(您会注意到第4行缺失了)。

TX: @TR;MF;1234;3;1;1;999999;12345;#
RX: MF;OK;9999-9999
TX: @TR;MF;1235;2;1;11111;22222;33333;44444;1;2;13579;30.23;1090.23;0;1;12345;#
TX: @COMMAND;12345
RX: @NONE

下面是终端中的console.log输出:

net server connection
recieved: @TR;MF;1234;3;1;1;999999;12345;#
pausing
sending: MF;OK;9999-9999
resuming
recieved: @TR;MF;1235;2;1;11111;22222;33333;44444;1;2;13579;30.23;1090.23;0;1;12345;#
pausing
sending: MF;OK;9999-9999
resuming
recieved: @COMMAND;12345
pausing
sending: @NONE

我哪里出错了!?提前感谢

我的代码没有任何问题。问题出在客户端。所以我需要答案。由于

最新更新