hprose / hprose-dart

Hprose 3.0 for Dart
https://pub.dev/packages/hprose
MIT License
31 stars 8 forks source link

How to use hprose-dart in google app engine env ? #3

Closed nne998 closed 5 years ago

nne998 commented 5 years ago

hi, I'm using Dart in Google app engine (via: https://pub.dev/packages/appengine).

When the code in my server.dart is looks like this

import 'dart:io';
import 'package:appengine/appengine.dart';
import 'package:hprose/rpc.dart';

requestHandler(HttpRequest request) {
  if (request.uri.path == "/rpc") {

    // HProse server code here 
    var service = new Service();
    service.addMethod(hello);

    //TODO:   how?
      service.bind( ???? )
      ...

  } else {
    request.response
      ..write('server ok')
      ..close();
  }
}

String hello(String name) {
  return 'hello $name';
}

main() async {
  await runAppEngine(requestHandler);
}

but I don't know how to bind the hprose handler within it's Method requestHandler(HttpRequest request)

nne998 commented 5 years ago

@andot plz

andot commented 5 years ago

I update hprose-dart to 3.0.3 to support google app engine.

import 'dart:io';
import 'package:appengine/appengine.dart';
import 'package:hprose/rpc.dart';

String hello(String name) {
  return 'hello $name';
}

var service = new Service();
service.addMethod(hello);

requestHandler(HttpRequest request) {
  if (request.uri.path == "/rpc") {
    service.http.requestHandler(request);
  } else {
    request.response
      ..write('server ok')
      ..close();
  }
}

main() async {
  await runAppEngine(requestHandler);
}
andot commented 5 years ago

If you want to support both http and websocket, you can use service.websocket instead of service.http, for example:

import 'dart:io';
import 'package:appengine/appengine.dart';
import 'package:hprose/rpc.dart';

String hello(String name) {
  return 'hello $name';
}

main() async {
  var service = new Service();
  service.addMethod(hello);
  await runAppEngine(service.websocket.requestHandler);
}
nne998 commented 5 years ago

hi , Thanks a lot. Very appreciate it!!