Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在服务器端的python脚本和web浏览器中的javascript之间进行通信_Javascript_Python_Node.js_Socket.io - Fatal编程技术网

在服务器端的python脚本和web浏览器中的javascript之间进行通信

在服务器端的python脚本和web浏览器中的javascript之间进行通信,javascript,python,node.js,socket.io,Javascript,Python,Node.js,Socket.io,我有一个python脚本,它驻留在web服务器上(运行node.js),并执行一些机器学习计算。必须使用在web浏览器中运行的javascript将数据提供给python脚本。如何做到这一点?我想知道完整的设置。目前,服务器只是本地主机 我相信服务器上需要一个简单的API,它可以接受来自客户端的输入,这可以通过JavaScript完成 您可以看看以下几种技术: 阿贾克斯 网袋 最好的方法是使用zerorpc,这是一个用于Python和Node.js的套接字服务器和客户端 在Python上安装:

我有一个python脚本,它驻留在web服务器上(运行node.js),并执行一些机器学习计算。必须使用在web浏览器中运行的javascript将数据提供给python脚本。如何做到这一点?我想知道完整的设置。目前,服务器只是本地主机

我相信服务器上需要一个简单的API,它可以接受来自客户端的输入,这可以通过JavaScript完成

您可以看看以下几种技术:

  • 阿贾克斯
  • 网袋

    • 最好的方法是使用
      zerorpc
      ,这是一个用于Python和Node.js的套接字服务器和客户端

      在Python上安装:

      pip install zerorpc
      
      在节点上安装:

      npm install zerorpc
      
      Python服务器文件:

      import zerorpc
      
      class HelloRPC(object):
         def hello(self, name):
      
            print "message from host: %s" % name
      
            return raw_input("Enter your message: ") 
      
      s = zerorpc.Server(HelloRPC())
      s.bind("tcp://0.0.0.0:4242")
      s.run()
      
      Node.js客户端文件:

      var express = require('express');
      var bodyParser = require('body-parser');
      var app = express();
      var zerorpc = require("zerorpc");
      
      var client = new zerorpc.Client();
      client.connect("tcp://127.0.0.1:4242");
      
      app.use(bodyParser.urlencoded({ extended: true })); 
      app.post('/myaction', function(req, res) {
        client.invoke("hello", "RPC", function(error, res, more) {
        console.log(res);
        res.send(req.body.name);
        });
      
      });
      
      app.listen(8080, function() {
      console.log('Server running at http://127.0.0.1:8080/');
      });
      
      虽然这里的示例代码相对简单,但它应该可以帮助您开始。此设置的总体逻辑如下所示:

    • 使用express从网页获取数据(存储为
      req.body.name
    • 获取此数据并通过
      zerorpc
      将其发送到Python服务器,该服务器可以处理数据并将其发送回Node.js
      zerorpc
      客户端

    • 一种方法是让浏览器端JavaScript通过API将数据发送到服务器。然后让您的服务器端JavaScript调用Python脚本,并像传递Bash命令一样传递数据。