• Stars
    star
    301
  • Rank 138,451 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 11 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hprose is a cross-language RPC. This project is Hprose 2.0 for Node.js

Hprose

Promises/A+ logo

Hprose for Node.js

Join the chat at https://gitter.im/hprose/hprose-nodejs npm download optionalDependency Status npm version License



Introduction

Hprose is a High Performance Remote Object Service Engine.

It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.

Hprose supports many programming languages, for example:

  • AAuto Quicker
  • ActionScript
  • ASP
  • C++
  • Dart
  • Delphi/Free Pascal
  • dotNET(C#, Visual Basic...)
  • Golang
  • Java
  • JavaScript
  • Node.js
  • Objective-C
  • Perl
  • PHP
  • Python
  • Ruby
  • ...

Through Hprose, You can conveniently and efficiently intercommunicate between those programming languages.

This project is the implementation of Hprose for Node.js.

Hprose 2.0 for Node.js Documents(中文版): https://github.com/hprose/hprose-nodejs/wiki

Usage

Http Server

Synchronous Functions or Methods

Hprose for Node.js is very easy to use. You can create a hprose server like this:

var hprose = require("hprose");
function hello(name) {
    return "Hello " + name + "!";
}
var server = hprose.Server.create("http://0.0.0.0:8080");
server.addFunction(hello);
server.start();

To start it use:

node --harmony server.js

--harmony is a v8 options, hprose use it to optimize serialization. This is not required option, but it is recommended to use it.

Asynchronous Functions or Methods

In fact most nodejs service methods are asynchronous, you can publish asynchronous function like this:

var hprose = require("hprose");
function hello(name, callback) {
    setTimeout(function() {
        callback("Hello " + name + "!");
    }, 10);
}
var server = hprose.Server.create("http://0.0.0.0:8080");
server.addAsyncFunction(hello);
server.start();

Http Client

Then you can create a hprose client to invoke it like this:

var hprose = require("hprose");
var client = hprose.Client.create("http://127.0.0.1:8080/");
var proxy = client.useService();
proxy.hello("world", function(result) {
    console.log(result);
});

To start it use:

node --harmony client.js

or

node --harmony-proxies client.js

Without --harmony-proxies, you need create proxy like this:

var hprose = require("hprose");
var client = hprose.Client.create("http://127.0.0.1:8080/");
var proxy = client.useService(["hello"]);
proxy.hello("world", function(result) {
    console.log(result);
});

Or create client like this:

var hprose = require("hprose");
var client = hprose.Client.create("http://127.0.0.1:8080/", ["hello"]);
client.hello("world", function(result) {
    console.log(result);
});

Exception Handling

If an error occurred on the server, or your service function/method throw an exception, it will be sent to the client. You need to pass an error callback function after succuss callback function to receive it. If you omit this callback function, the client will ignore the exception, like never happened.

For example:

proxy.hello("world", function(result) {
    console.log(result);
}, function(name, err) {
    console.error(err);
});

Tcp Server & Client

The Tcp Server & Client are used as same as the Http Server & Client.

To create a Tcp Server:

var server = hprose.Server.create("tcp://0.0.0.0:4321");

To create a Tcp Client:

var client = hprose.Client.create('tcp://127.0.0.1:4321');

Unix Socket Server & Client

The Unix Socket Server & Client are used as same as the Http Server & Client.

To create a Unix Socket Server:

var server = hprose.Server.create("unix:/tmp/my.sock");

To create a Unix Socket Client:

var client = hprose.Client.create('unix:/tmp/my.sock');

WebSocket Server & Client

The WebSocket Server & Client are used as same as the Http Server & Client.

To create a WebSocket Server:

var server = hprose.Server.create("ws://0.0.0.0:8080/");

To create a WebSocket Client:

var client = hprose.Client.create('ws://0.0.0.0:8080/');

More Repositories

1

hprose-php

Hprose is a cross-language RPC. This project is Hprose 3.0 for PHP
PHP
1,972
star
2

hprose-golang

Hprose is a cross-language RPC. This project is Hprose for Golang.
Go
1,247
star
3

hprose-java

Hprose is a cross-language RPC. This project is Hprose 2.0 for Java
Java
551
star
4

hprose-dotnet

Hprose 3.0 for .NET
C#
382
star
5

hprose

HPROSE is short for High Performance Remote Object Service Engine. It's a serialize and RPC library, the serialize library of hprose is faster, smaller and more powerful than msgpack, the RPC library is faster, easier and more powerful than thrift.
368
star
6

hprose-html5

Hprose is a cross-language RPC. This project is Hprose 2.0 Client for HTML5
JavaScript
238
star
7

hprose-swoole

Hprose asynchronous client & standalone server based on swoole
PHP
185
star
8

hprose-go

Hprose 1.0 for Golang (Deprecated). Hprose 2.0 for Golang is here:
Go
140
star
9

hprose-js

Hprose is a cross-language RPC. This project is Hprose 2.0 RPC for JavaScript
JavaScript
135
star
10

hprose-objc

Hprose is a cross-language RPC. This project is Hprose 2.0 Client for Objective-C
Objective-C
130
star
11

hprose-delphi

Hprose is a cross-language RPC. This project is Hprose 2.0 for Delphi and FreePascal
Pascal
116
star
12

hprose-wx

hprose 的微信小程序专用版
JavaScript
70
star
13

hprose-typescript

Hprose 3.0 for TypeScript
TypeScript
58
star
14

hprose-pecl

Hprose is a cross-language RPC. This project is Hprose serialize/unserialize extension for PHP
C
54
star
15

hprose-cpp

Hprose for C++
C++
51
star
16

hprose-python

Hprose for Python
Python
48
star
17

hprose-cpp1x

Hprose 2.0 for C++ 1x
C++
44
star
18

hprose-aauto

Hprose for AAuto Quicker
36
star
19

hprose-yii

Hprose Server for Yii
CSS
35
star
20

hprose-doc

Hprose 文档汇总
34
star
21

hprose-lua

Hprose for Lua
Lua
32
star
22

hprose-dart

Hprose 3.0 for Dart
Dart
30
star
23

hprose-d

Hprose for Dlang
D
26
star
24

hprose-workerman

A PHP class that enables you to use Hprose with Workerman. Includes custom protocol, bridge and interface. Enjoy Hprose at its finest with multi-process powers!
PHP
23
star
25

hprose-ruby

Hprose for Ruby
Ruby
22
star
26

hprose-rust

Hprose for Rust
Rust
21
star
27

hprose-swift

Hprose for Swift
18
star
28

hprose-as3

Hprose for ActionScript 3.0
ActionScript
18
star
29

hprose-phpcpp

Hprose for PHP-CPP (Deprecated)
C++
17
star
30

hprose-asp

Hprose for ASP
JavaScript
16
star
31

hprose-perl

Hprose for Perl
Perl
12
star
32

hprose-nim

Hprose for Nim
Nim
11
star
33

hprose-symfony

Hprose Server for Symfony
PHP
9
star
34

hprose-as2

Hprose for ActionScript 2.0
ActionScript
9
star
35

hprose-crystal

Hprose for Crystal
8
star
36

hprose-psr7

Hprose Service for PSR7
PHP
7
star
37

hprose-hack

Hprose for Hack
Hack
7
star
38

hprose-j2me

Hprose for Java ME
Java
7
star
39

hprose.github.io

Hprose WebSite
PHP
7
star
40

hprose-julia

Hprose for Julia
6
star
41

hprose-elixir

Hprose for Elixir
5
star