pusherテスト

アプリ内メッセンジャーの制作で、リアルタイム性を出すためにいろいろ検討した。Node.jsはなんかめんどそう。WebSocketも面倒そう。

で、サンプルコードが理解できたpusherにする。

<テスト環境の構築>

MacのXAMPPでPHPのComposerがいるらしい

$ composer
-bash: composer: command not found

入ってないらしい。

https://blog.fire-sign.info/686/

を参考にインストする

$ curl -sS https://getcomposer.org/installer | php

インスト始まる

ll settings correct for using Composer
Downloading...

Composer (version 1.10.9) successfully installed to: /Users/ユーザ名/composer.phar

どうも composer.pahr を特定のディレクトリにいれなきゃらしい

$ sudo mv composer.phar /usr/local/bin/composer

移動できたのでバージョンチェック

$ composer --version
Composer version 1.10.9 2020-07-16 12:57:00

このバージョンが入りましたとさ

肝心のpusherを入れる

$ composer require pusher/pusher-php-server
Using version ^4.1 for pusher/pusher-php-server
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

でインスト終わる。

うまくいかない

$ sudo nano .bash_profile

export PATH=$PATH:/Applications/XAMPP/bin

を追加(Mac)

source ~/.bash_profile

して実行

 

UnityでGoogle Cloud Natural Languageにアクセスする

APIキーが見えるのであくまでも実験用です※PHPだからクライアントには見えないか,,

流れ

Google Cloud Natural LanguageのAPIキーを取得

(がんばってとってください)

  1. 作成するとこんな画面がでてきます
  2. HTTPリファラかIPアドレス制限(サーバのIPアドレス)を使用します
  3. PHPファイルを作成します(test2.php)
<?php
if(isset($_POST["comment"])){
$comment = $_POST["comment"];
$url = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=(ここに自分のAPIキーを入れる)';
$document = array('type' =>'PLAIN_TEXT','language' =>'ja','content' =>$comment);
$postdata = array('encodingType' => 'UTF8', 'document' => $document);
$json_post = json_encode($postdata);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_post);
$result = curl_exec($ch);
curl_close($ch);
 
$result_array = json_decode($result,true);
    
echo $result_array[documentSentiment][score];
 
}
?>

サーバにアップロードし,そのページまでのURLを確認します

 

Unit側のC#ファイルを作成します

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//<--追加
//using System;

public class test2 : MonoBehaviour
{

    public Text ResultText_;
    public Text InputText_;
    public string ServerAddress;//サーバアドレスをエディタで入力する


    // Update is called once per frame
    void Update()
    {
        
    }

    void Start()
    {
        ResultText_.text = "";//画面表示を消す

    }

    //UIのボタンにアサインするスクリプト
    public void SendSignal_Button_Push()
    {
        StartCoroutine("post_data");//ボタン押されたらコルーチンを開始
    }



    private IEnumerator post_data()
    {
        WWWForm form = new WWWForm();
        form.AddField("comment", InputText_.text); //Input Field等から渡された変数をcommentのタグ付けして内容を送信
        WWW post = new WWW(ServerAddress, form);
        yield return post;//データの戻りを待つ
        Debug.Log(post.text);//コンソールに表示(この出力内容はPHPで変更可能)
        ResultText_.text = post.text;
    }




    }

Unityでの操作

  1. Unityで空のGameObjectを作成し,test2.csを貼り付けます
  2. PHPへのURLを入力します
  3. GameObject>UI>InputFiledGameObject>UI>Textを作成し,下図のように割り当てます
  4. GameObject>UI>Buttonを作成し,Inspectorからボタンを押せるようにします
  5. InputFieldはMuli Line Newlineの設定します
  6. Unityを再生し,文字を入力すると,感情が帰ってきます
  7. 「課題が終わらない」は-0.2でした

 

スクリプトのなんとなく対応みたいなの