samchon
380
2018-11-16 18:13:50 작성 2018-11-16 18:44:35 수정됨
0
627

RFC (Remote Function Call) Network 라이브러리 만들고 있습니다.


https://github.com/samchon/tgrid

https://github.com/samchon/tgrid/wiki/Basic-Concepts


TypeScript (JavaScript) 에서 쓸 수 있는 RFC (Remote Function Call) 라이브러리 만들고 있습니다.

실시간 네트워크 시스템을 아주 쉽게 구현할 수 있게 해 주는게 목표로, 사용법은 아래 예제에서 보시다시피 아주 간단합니다. 현재 알파버전을 빌드하여 배포중에 있으며, 혹 JS 를 쓰시건데 실시간 네트워크 시스템을 구현해야 하신다면, 꼭 한 번 써 주십시오.


Server

import { Vector } from "tstl/container";
import { WebServer } from "tgrid/protocol/web";

async function main(): Promise<void>
{
    let server = new WebServer();
    await server.open(10101, async acceptor =>
    {
        // accept connection & provide Vector
        await acceptor.accept();
        await acceptor.listen(new Vector<number>());
    });
}
main();


Client

import { Vector } from "tstl/container";
import { WebConnector } from "tgrid/protocol/web";

async function main(): Promise<void>
{
    //----
    // PREPARE
    //----
    // do connect
    let connector = new WebConnector();
    await connector.connect("ws://127.0.0.1:10101");

    // wait server to provide the Vector
    await connector.wait();

    // get Driver<Controller>
    let v = connector.getDriver<Vector<number>>();

    //----
    // CALL FUNCTIONS IN THE REMOTE SYSTEM
    //----
    // insert elements
    for (let i: number = 0; i < 5; ++i)
        await v.push_back(i);

    // access elements
    console.log("size:", await v.size());
    for (let i: number = 0; i < await v.size(); ++i)
        console.log("  element:", await v.at(i));

    // catching exception is also possible
    try 
    {
        await v.at(9999);
    } 
    catch (exp) 
    {
        console.log(`${exp.name}: "${exp.message}"`);
    }

    // close the connection
    await connector.close();
}
main();
size: 5
  element: 0
  element: 1
  element: 2
  element: 3
  element: 4
out_of_range: "Target index is greater than Vector's size."
0
0
  • 댓글 0

  • 로그인을 하시면 댓글을 등록할 수 있습니다.