Reputation: 324
I am having trouble setting up a simple a simple server using the net module in nodejs that keeps each tcp socket open once connected, reads data from the socket and replies/writes data back to the socket after each line of text is received.
I am receiving all data lines/chunks/requests and for each one I write a response string to the socket. However, only some of the written responses are being received by the client.
Below is my simplified code for the server:
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)
The client I do not have control over but has been tested to be working fine.
This is the desired output:
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
And this is the actual output: (You'll notice line 4 is missing).
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
And here is the console.log output in the terminal:
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
Where am I going wrong!? Thanks in advance
Upvotes: 0
Views: 133
Reputation: 324
There was nothing wrong with my code. The problem was on the client side. So need need for answers. Thanks
Upvotes: 0