如何在Node.js中将express与tcp-socket相结合

我用node.js实现了我的第一个networking应用程序并expression。 它工作正常。 结构如下。

app.get('/', (request, response) => { response.render('home', {orders, actualPosition, path}); }); app.post('/', function(req, res){ //do something res.redirect('/') }) app.listen(8080, () => { console.log(`Listening on http://127.0.0.1:${port}/ !`); }) 

现在我想用matlab程序进行通信,最好通过tcp / ip进行通信。 意思是我有一个matlab程序,与web应用程序交换数据。 我通过在另一个端口上打开一个带有networking的服务器来实现发送数据:

 var server = net.createServer(function(socket) { //read data socket.setEncoding("ascii"); //set data encoding (either 'ascii', 'utf8', or 'base64') socket.on('data', function(data, res) { //update new data in browser }); //send data socket.write('Echo server\n'); socket.pipe(socket); }); server.listen(8081, '127.0.0.1'); 

我现在的问题是如何在浏览器中通过tcp / ip显示接收的数据。 我可以从外部以某种方式调用app.get('/')来刷新页面。 我有什么select来完成这项工作?

谢谢

我认为你的结构应该接近以下几点:

  • 表示app接受来自浏览器的请求
  • 路由处理器通过networking服务器发送请求
  • networking服务器响应数据
  • 快速路由处理程序用数据响应客户端

所以,你的错误是你将有HTTP服务器和networking客户端(不是networking服务器)。 示例networking客户端。

我意识到的解决scheme是在Web-Client和Web-Server之间另外集成一个websocket。 关于http的问题是,你不能做从服务器到客户端的请求。 服务器可以响应来自客户端的请求。 这就是为什么一个websocket是必要的。 它允许从服务器发送消息/数据到客户端。 接收到的数据可以由客户端显示。