aardio 文档

aardio 范例:event-stream

//event-stream
import win.ui;
/*DSG{{*/
var winform = win.form(text="PHP - event-stream";right=753;bottom=434)
winform.add(
edit={cls="edit";left=20;top=12;right=734;bottom=404;edge=1;multiline=1;z=1}
)
/*}}*/

//导入 php 扩展库
import process.php;

//生成测试 PHP 文件。
process.php.code["/test-sse.php"] =/********
<?php
header("Content-Type: text/event-stream");
header("Cache-Control:no-cache,must-revalidate,no-store");
header("Pragma:no-cache"); //禁止缓存  
ignore_user_abort(true); //后台运行  
set_time_limit(0); //取消脚本运行时间的超时上限

while (true) {  

  //服务器事件推送
  echo "event: ping\n";
  $curDate = date(DATE_ISO8601);
  echo 'data: {"time": "' . $curDate . '"}';
  echo "\n\n"; //每个事件以 2 个换行结束

  if (ob_get_level() > 0) ob_end_flush();
  flush();
  sleep(1);
} 
?>********/

var url = process.php("/test-sse.php")

thread.invoke( 
    function(url,winform){ 
        import web.rest.jsonLiteClient;
        var http = web.rest.jsonLiteClient();

        var eventSource = http.api(url,"GET")

        eventSource.get(,, function(message){   
            winform.edit.print("HTTP 服务端推送了事件")
            winform.edit.print(message);
        } ); 

    },url,winform
)
winform.show();
win.loopMessage();

Markdown 格式