Blockchain
NEM

はじめに

はじめまして。@soralis_nemです。
ご縁があり@44uk_i3さんの企画nem Advent Calendar 2017に参加させていただくことになりました。
すっかり参加していることを忘れてしまい、投稿が遅れてしまい大変申し訳ありませんでした。

tipnemとは

@namuyanさんが開発された高性能なtipbotです。
詳しくはnem Advent Calendar 2017の12/5日の記事をご覧ください。

tipnemをphpで

tipnemには高性能なAPIがありますが、httpではなくWebsocketを使っているため特殊です。
なむやんさんはPython版のライブラリは公開しているもののPHP版での扱い方を書いていきます。
本当はライブラリを書きたかったのですが、時間が足りなかったためサンプルコードをのみですが、そのうち公開するのでお楽しみに。

textalk/websocketを使います。

composer.json
{
    "require": {
        "textalk/websocket": "1.0.*"
    }
}

composer installをすればwebsocketが使えるようになります。

sample.php
<?php


require('vendor/autoload.php');
use WebSocket\Client;

$url = "ws://tipnem.tk:8088";
$client = new Client($url);
$client->receive();
while (true) {

    try {
        $uuid = mt_rand(1, 2147483647);
        $req = ["command"=>"bot/info","data"=>[],"uuid"=>$uuid];
        $req = json_encode($req);
        $client->send($req);
        $res =$client->receive();
        $res = json_decode($res); 
        print_r($res);
        break;
    } catch (WebSocket\ConnectionException $e) {
        $client = new Client($url);
    }
}

さらっとこんな感じに書くととりあえずは完了です。
あとは仕様をよんで実装していくだけです。

12/26 20:30追記 コードが間違っていたようなので修正しました

追記
https://github.com/soralis-nem/tipnem4php
にコードを公開しました。
composer require soralis_nem/tipnem4php で利用できます。