【问题标题】:NodeJS (coffeescript): TCP socket only writing intermittentlyNodeJS(coffeescript):TCP套接字仅间歇性写入
【发布时间】:2015-12-28 03:32:52
【问题描述】:

我在使用 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: #{"@NONE\n"}")
      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

我哪里错了!?提前致谢

【问题讨论】:

  • 这是 Coffeescript 吗?如果是这样,你应该在你的问题中说/添加一个标签。

标签: node.js sockets tcp coffeescript stream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2018-02-03
    相关资源
    最近更新 更多