3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nemAdvent Calendar 2017

Day 18

Tipnem PHP

Last updated at Posted at 2017-12-26

#はじめに
はじめまして。@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 で利用できます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?