繁体   English   中英

服务器端的python脚本与网络浏览器中的javascript之间进行通信

[英]communicate between python script on server side and javascript in the web-browser

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

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

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

  • 阿贾克斯
  • WebSockets。

最好的方法是对Python和Node.js使用zerorpc (套接字服务器和客户端)。

在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/');
});

尽管此处的示例代码相对简单,但它应该可以帮助您入门。 此设置的总体逻辑如下:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM