Пересылка данных из socket.io в tcp socket Node.js - PullRequest
0 голосов
/ 12 октября 2018

После долгих поисков я ничего не нашел в Stackoverflow по этой теме. У меня есть нодовое приложение, в котором на разных портах работают 3 разных сервера

  • Веб-сервер (обслуживает динамические страницы)
  • Socket.io (обрабатывает запросы из Webapp)
  • Tcp Socket (обрабатывает запросы из приложения Desktop)

Я хочу создать двунаправленную связь между socket.io исокет tcp, так что данные, отправленные веб-приложением, будут получены приложением узла. Он будет перенаправлять эти данные в приложение Desktop с помощью сокета tcp.Мне удалось настроить пересылку данных из tcp-сокета в io.socket, но выполнение обратного выглядит немного сложнее

Мой код Socket.io

io.sockets.on('connection', function (socket)
 {
     console.log('Welcome Admin!')
     mysocket = socket

    socket.on('data', function (data)
    {
        console.log(data) // we received data from webapp lets forward it
        // problem occur here, already tried to save the socket object of tcp but it gives error "cannot read property 'write' of undefined"
        tcpSocket.emit('data', data) // also tried write function same error i.e. tcpSocket.write(data)
    })
 })

мой код сокета Tcp

var server = net.createServer(function(socket)
 {
    tcpSocket = socket; //to store socket object
    console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);

    socket.on('data', function(data) 
    {
        //received data from desktop app now forwarding to webapp
        console.log('DATA ' + socket.remoteAddress + ': ' + data)
        mysocket.emit('data', data + ''); //this works webapp receives data
    })

    socket.on('error', function(data) 
    {     
        console.log(data)
    })

    socket.on('close', function(data) 
    {
        console.log('CLOSED: ' + socket.remoteAddress +' '+ socket.remotePort)
    })
 })
...