hprose / hprose-nodejs

Hprose is a cross-language RPC. This project is Hprose 2.0 for Node.js
MIT License
300 stars 88 forks source link

用了 HTTPService 但是遇到一个问题 #29

Closed yolio2003 closed 5 years ago

yolio2003 commented 5 years ago

根据: https://github.com/hprose/hprose-nodejs/wiki/Hprose-%E6%9C%8D%E5%8A%A1%E5%99%A8 操作可以使用,但是,我不是 express koa connect,而是自己的服务器, 这种情况下, service.handle 传入的 req res 要做什么包装吗?

而且一般我们处理的是 /rpc 的路径下的请求,而不是根路由。

能不能来个原生 nodejs 的示例:

const hprose= require('hprose');
const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

var service = new hprose.HttpService();
// service.add(hello);

const server = http.createServer((req, res) => {
  // 这里 service.handle 要如何接入呢?

  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

这样也方便大家自己去封装了

andot commented 5 years ago

原生最简单:

const server = http.createServer(service.handle);
andot commented 5 years ago

另外,hprose 3.0 for TypeScript 已经出来了(虽然现在还是 beta 版本),可以完全取代原来的 html5,nodejs 和 wx 版本。欢迎试用。在 npm 上有个 @hprose 分类,下面有许多的包。

yolio2003 commented 5 years ago

我去试试 3.0 ! 另外其实我想集成到现有的 node 处理中,比如只在 /rpc 下的所有 post 请求才给 service.handle 处理 不知道应该如何做。

andot commented 5 years ago

这个也很容易啊:

const server = http.createServer((req, res) => {
    if (req.url && req.url.toLowerCase() === '/rpc') {
        service.handle(req, res);
        return;
    }

  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});
yolio2003 commented 5 years ago

多谢,我再试试!