Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    オオキマキ@dApps開発者ギルド
    @ookimaki_JP_twitter

    こちらを参考にUniqysKitを動かしてみております。
    https://uniqys.github.io/UniqysKitDocs/introduction/get-started.html#frontend

    Pythonでは問題なく動かせるようになったので、node.jsで書き換えてみているのですが

    ""
    //Config
    CLIENT_HOST = 8080;

    APP_HOST = 'localhost'
    APP_PORT = 5650

    DB_HOST = 'localhost'
    DB_PORT = 5652

    apiUrl = APP_HOST + ":" + APP_PORT;
    dbUrl = DB_HOST + ":" + DB_PORT;

    var url = require('url');

    var express = require('express');
    var app = express();

    var bodyParser = require('body-parser');
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));

    var axios = require('axios');
    var api = axios.create({
    baseURL: http://${apiUrl}
    })

    var Memcached = require('memcached');
    var db = new Memcached(dbUrl);

    app.use(express.static('public'));

    app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
    });

    app.post('/message', async function (req, res) {
    console.log("post") <--ここ
    sender = req.headers.uniqys-sender
    body = req.body
    message = body.message
    db.set('message', message)

    });

    app.get('/message', async function (req, res) {
    console.log("get")
    });

    app.listen(APP_PORT, function () {
    //console.log('App listening on port: ' + APP_PORT)
    });
    ""

    htmlのファイルはチュートリアルそのままです。

    post-messageのところで何故かconsole.log(postの実行が行われません)
    getはうまくいっているようです。何か解決策をご存知ないでしょうか。

    下記のようにトランザクションが承認された、のようなメッセージは出るのですが、DBに書き込まれていないようです。

    get
    chain-core:tx-pool propagate transaction 9b9385d2043fa5e2c96f59ceaa80fb8258e50bf92b6fd882621afbda3ad6999e +0ms
    chain-core:consensus enter propose: has transactions +13s
    chain-core:consensus propose: (3, 1) 7f028e8d4de68fbc35b66a462dafe167381873648d998c3fbb307e2e7323b2ab +1ms
    chain-core:consensus prevote: (3, 1) 7f028e8d4de68fbc35b66a462dafe167381873648d998c3fbb307e2e7323b2ab +1ms
    chain-core:consensus see valid block 7f028e8d4de68fbc35b66a462dafe167381873648d998c3fbb307e2e7323b2ab +0ms
    chain-core:consensus +2/3 prevote for block +0ms
    chain-core:consensus precommit: (3, 1) 7f028e8d4de68fbc35b66a462dafe167381873648d998c3fbb307e2e7323b2ab +0ms
    chain-core:consensus +2/3 precommit for block +1ms
    chain-core:consensus commit block(3): 7f028e8d4de68fbc35b66a462dafe167381873648d998c3fbb307e2e7323b2ab +0ms
    chain-core:executor execute transaction in block(3) +13s
    chain-core:sync chain block(3) from local +13s
    chain-core:sync propagate block (3) +0ms

    odanado
    @odanado
    原因がわかりました
    jsのMemcachedライブラリは非同期でsetする仕様のようです。そのためKitのマークルツリーに対する書き込みが終わる前に、expressがレスポンスを返してしまっています
    setの部分を以下のように変更すれば、マークルツリーへの書き込み完了後にレスポンスを返すため、正常に動作します
    db.set('message', message, 0, function(err, data) {
            res.send("done")
        })
    オオキマキ@dApps開発者ギルド
    @ookimaki_JP_twitter
    確認が遅れました!ありがとうございます!無事に動くようになりました!