将数据从socket.io转发到tcp套接字Node.js

时间:2018-10-12 07:41:11

标签: node.js sockets socket.io tcpsocket

经过大量搜索后,我在Stackoverflow上未找到与此主题相关的任何内容 我有一个节点应用程序,其中有3个不同的服务器在不同的端口上运行

  • Web服务器(提供动态页面)
  • Socket.io(处理来自Webapp的请求)
  • Tcp套接字(处理来自桌面应用程序的请求)

我想在socket.io和tcp套接字之间创建双向通信,以便由节点应用程序接收Web应用程序发送的数据,它将通过使用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)
    })
 })

0 个答案:

没有答案