Processingで普通に通信をすると通信が終わるまで描写が止まってしまいます。それではまずいのでThreadにしてサーバからレスポンスを受けとるようにしたコードを書きました。このコードはGitHubにアップしてあります。
HTTP-Requests-for-Processing
post、getができる HTTP-Requests-for-Processing ライブラリを使うのでここからダウンロードしてライブラリフォルダまたはcodeフォルダに入れてください。
Processing
HttpResponse.pde (メインのpde)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
private final HttpConnect httpConnect = new HttpConnect(); void setup() { // send data httpConnect.SetData(123); } void draw() { } // response void SetDataOnComplete(String _response) { println("response: " + _response); } |
HttpConnect.pde (通信部分をクラス化したpde)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import http.requests.*; class HttpConnect{ // vars private final String setDataUrl = "http://example.com/setData.php"; private Thread setStandNumThread; // constructor HttpConnect(){ } // SetData public void SetData(int _data){ setStandNumThread = new Thread(new SetDataThread(setDataUrl, _data)); setStandNumThread.start(); } } class SetDataThread implements Runnable { private String setDataUrl; private int data; public SetDataThread(String _setDataUrl, int _data){ setDataUrl = _setDataUrl; data = _data; } public synchronized void run() { GetRequest get = new GetRequest( setDataUrl + "?m=" + data ); get.send(); String response = get.getContent(); SetDataOnComplete(response); } } |
php
setData.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php // const vars init const SET_OK = 1; const GET_DATA_ERROR = 1001; // get from signage app $data = $_GET["data"]; // vars init $returnNum = SET_OK; // save data if( $data === "" || $data === null ) $returnNum = GET_DATA_ERROR; echo $returnNum; ?> |
コメントを残す