如何在Node中使用TCP与其他应用程序进行交互

时间:2018-02-09 15:51:44

标签: javascript node.js python-3.x sockets socket.io

我是套接字的新手,我想连接两个进程(仅在localhost上)。我有我的python程序,它做了一些事情,需要将它的结果永久地发送到用javascript编写的用户界面。我考虑过Socket.IO,但据我所知,Socket.IO位于http和python套接字之上是TCP连接。甚至可以通过套接字连接javascript和python吗?

3 个答案:

答案 0 :(得分:0)

您可以使用Node.js核心API附带的Net Module来创建TCP套接字服务器或作为客户端连接到现有的TCP服务器。

如果您正在寻找创建新的TCP服务器,可以使用net.createServer()或自己创建new Server

const {Server} = require('net')

const server = new Server(socket=> {
  console.log('client connected')

  // Attach listeners for the socket
  socket.on('data', message => {
    console.log('message')

    // Write back to the client
    socket.write('world')     
  })

  // Send the client a message to disconnect from the server after a minute
  setTimeout(() => socket.write('disconnect'), 60000)

  socket.on('end', () => console.log('client disconnected'))
})

server.listen('localhost', () => console.log('listening'))

如果您正在寻找创建与现有服务器的客户端TCP连接,您可以使用net.createConnection()或创建new Socket并使用socket.connect()连接到TCP服务器。< / p>

const {Socket} = require('net')

const client= new Socket()

client.connect('localhost', () => {
  console.log('connected to localhost')

  client.on('data', message => {
    if (message === 'disconnect') {
      console.log('disconnecting from localhost')
      client.end()
    } else {
      console.log(`Message from the Server: ${message}`)
    }
  })

  client.write('hello!')
})

答案 1 :(得分:0)

我知道一个项目使用ZeroMQ messaging protocol来完成你感兴趣的事情。你应该考虑看一下。

答案 2 :(得分:-1)

你可以考虑一个WebSocket,虽然它可能是一个单独本地的重要选择。文档:https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

此外,您似乎正在使用socket.io,也许您应该尝试使用此库:https://github.com/evanw/socket.io-python这似乎与您的项目有关。