ダウンロード サンプルソース (2.6 KB)
今回は、長崎県庁グループウェアポータルサイトのトップ画面にあるRSSリーダーと、スケジューラーに実装したメッセージャーについて書いていきます。RSSリーダーは、RSS情報を非同期で取得して、記事を表示する際は文字をスクロールさせて表示しています。メッセンジャーは、CurlのUDPソケットの機能を使用して実装しています。
はじめに
今回は、ポータルサイトのトップ画面にあるRSSリーダーと、スケジューラーに実装したメッセージャーについて書いていきます。RSSリーダーは、RSS情報を非同期で取得して、記事を表示する際は文字をスクロールさせて表示しています。メッセンジャーは、CurlのUDPソケットの機能を使用して実装しています。
これまでの記事
RSSリーダー
RSSリーダーには、主に以下の機能があります。
- ヘッドラインをティッカー表示
- ヘッドラインの一覧表示
- ヘッドラインをクリックすると目的の記事をブラウザを起動して表示
- フィードの登録・削除、記事の更新間隔・文字のスクロール速度の設定

ポータルサイトを起動すると、RSS情報を一定時間ごとに自動的にダウンロードして、記事をティッカー表示するようにしました。RSS情報をダウンロードする際は、非同期で取得するようにして、ダウンロード中に画面が固まらないようにしています。
{define-proc public {my-async-read-open
p_src: Url,
p_after-access-proc: {proc-type {#TextInputStream}: void},
error-proc: #{proc-type {Exception}: void} = null
}: void
let v_file: HttpFile =
{p_src.instantiate-File} asa HttpFile
{with-file-caching-style FileCachingStyle.resynchronize do
let v_async-file-opener: AsyncFileOpener =
{v_file.async-read-open
{on t: AsyncFileOpenEvent do
let v_stream: #TextInputStream = null
{try
{if-non-null t.exception then
{if-non-null error-proc then
{error-proc t.exception asa Exception}
}
else
{if v_async-file-opener.done? and
not t.canceled? then
set v_stream = t.stream asa TextInputStream
}
{p_after-access-proc v_stream}
}
finally
{if v_stream != null and
v_stream.open? then
{v_stream.close}
}
}
}
}
}
}
||RSS情報を非同期で取得する
{my-async-read-open
{url "http://rss.rssad.jp/rss/codezine/new/20/index.xml"},
{proc {p_in: #TextInputStream}: void
||取得完了したときに呼ばれる
{if-non-null p_in then
let (v_buf: StringBuf,
v_num: int) = {p_in.read-one-string}
:
省 略
:
}
},
error-proc =
{proc {e: Exception}: void
||エラーが発生したときに呼ばれる
}
}
この記事は参考になりましたか?
- Curlで構築する長崎電子県庁システム(ポータル・スケジューラー編)連載記事一覧
-
- Curlで構築する電子県庁システム(ポータル・スケジューラー編) RSSリーダーとメッセン...
- Curlで構築する長崎県電子県庁システム(ポータル・スケジューラー) UIの向上と帳票
- Curlで構築する長崎県電子県庁システム(ポータル・スケジューラー) 部品の拡張とPHP連...
- この記事の著者
-
株式会社ドゥアイネット 前田慎治(マエダシンジ)
株式会社ドゥアイネットに勤務するプログラマーです。制御系から事務系まで様々な開発を経験し、現在はCurlやOpenLaszloを使ってRIAの開発を担当しています。OpenLaszloで開発した「スマートスケジューラー」http://www.dinss.jp/
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア



