我在使用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
我哪里出错了!?提前感谢
我的代码没有任何问题。问题出在客户端。所以我需要答案。由于